+
+ {% include 'partials/blueprints.html.twig' with { data: user, blueprints: blueprints } %}
+
+
+
+
+
+
+
+
+
+ {% endif %}
+{% endblock %}
diff --git a/user/plugins/admin-addon-user-manager/vendor/autoload.php b/user/plugins/admin-addon-user-manager/vendor/autoload.php
new file mode 100644
index 0000000..e967d8f
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/autoload.php
@@ -0,0 +1,7 @@
+
+ * Jordi Boggiano
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ * $loader = new \Composer\Autoload\ClassLoader();
+ *
+ * // register classes with namespaces
+ * $loader->add('Symfony\Component', __DIR__.'/component');
+ * $loader->add('Symfony', __DIR__.'/framework');
+ *
+ * // activate the autoloader
+ * $loader->register();
+ *
+ * // to enable searching the include path (eg. for PEAR packages)
+ * $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier
+ * @author Jordi Boggiano
+ * @see http://www.php-fig.org/psr/psr-0/
+ * @see http://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+ // PSR-4
+ private $prefixLengthsPsr4 = array();
+ private $prefixDirsPsr4 = array();
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ private $prefixesPsr0 = array();
+ private $fallbackDirsPsr0 = array();
+
+ private $useIncludePath = false;
+ private $classMap = array();
+ private $classMapAuthoritative = false;
+ private $missingClasses = array();
+ private $apcuPrefix;
+
+ public function getPrefixes()
+ {
+ if (!empty($this->prefixesPsr0)) {
+ return call_user_func_array('array_merge', $this->prefixesPsr0);
+ }
+
+ return array();
+ }
+
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param array $classMap Class to filename map
+ */
+ public function addClassMap(array $classMap)
+ {
+ if ($this->classMap) {
+ $this->classMap = array_merge($this->classMap, $classMap);
+ } else {
+ $this->classMap = $classMap;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix, either
+ * appending or prepending to the ones previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ */
+ public function add($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ if ($prepend) {
+ $this->fallbackDirsPsr0 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr0
+ );
+ } else {
+ $this->fallbackDirsPsr0 = array_merge(
+ $this->fallbackDirsPsr0,
+ (array) $paths
+ );
+ }
+
+ return;
+ }
+
+ $first = $prefix[0];
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+
+ return;
+ }
+ if ($prepend) {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixesPsr0[$first][$prefix]
+ );
+ } else {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $this->prefixesPsr0[$first][$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace, either
+ * appending or prepending to the ones previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function addPsr4($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ // Register directories for the root namespace.
+ if ($prepend) {
+ $this->fallbackDirsPsr4 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr4
+ );
+ } else {
+ $this->fallbackDirsPsr4 = array_merge(
+ $this->fallbackDirsPsr4,
+ (array) $paths
+ );
+ }
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+ // Register directories for a new namespace.
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ } elseif ($prepend) {
+ // Prepend directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixDirsPsr4[$prefix]
+ );
+ } else {
+ // Append directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $this->prefixDirsPsr4[$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix,
+ * replacing any others previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 base directories
+ */
+ public function set($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr0 = (array) $paths;
+ } else {
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace,
+ * replacing any others previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-4 base directories
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function setPsr4($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr4 = (array) $paths;
+ } else {
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Turns on searching the include path for class files.
+ *
+ * @param bool $useIncludePath
+ */
+ public function setUseIncludePath($useIncludePath)
+ {
+ $this->useIncludePath = $useIncludePath;
+ }
+
+ /**
+ * Can be used to check if the autoloader uses the include path to check
+ * for classes.
+ *
+ * @return bool
+ */
+ public function getUseIncludePath()
+ {
+ return $this->useIncludePath;
+ }
+
+ /**
+ * Turns off searching the prefix and fallback directories for classes
+ * that have not been registered with the class map.
+ *
+ * @param bool $classMapAuthoritative
+ */
+ public function setClassMapAuthoritative($classMapAuthoritative)
+ {
+ $this->classMapAuthoritative = $classMapAuthoritative;
+ }
+
+ /**
+ * Should class lookup fail if not found in the current class map?
+ *
+ * @return bool
+ */
+ public function isClassMapAuthoritative()
+ {
+ return $this->classMapAuthoritative;
+ }
+
+ /**
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+ *
+ * @param string|null $apcuPrefix
+ */
+ public function setApcuPrefix($apcuPrefix)
+ {
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
+ }
+
+ /**
+ * The APCu prefix in use, or null if APCu caching is not enabled.
+ *
+ * @return string|null
+ */
+ public function getApcuPrefix()
+ {
+ return $this->apcuPrefix;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return bool|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ includeFile($file);
+
+ return true;
+ }
+ }
+
+ /**
+ * Finds the path to the file where the class is defined.
+ *
+ * @param string $class The name of the class
+ *
+ * @return string|false The path if found, false otherwise
+ */
+ public function findFile($class)
+ {
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+ return false;
+ }
+ if (null !== $this->apcuPrefix) {
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+ if ($hit) {
+ return $file;
+ }
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if (false === $file && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if (null !== $this->apcuPrefix) {
+ apcu_add($this->apcuPrefix.$class, $file);
+ }
+
+ if (false === $file) {
+ // Remember that this class does not exist.
+ $this->missingClasses[$class] = true;
+ }
+
+ return $file;
+ }
+
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ $subPath = $class;
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
+ $subPath = substr($subPath, 0, $lastPos);
+ $search = $subPath . '\\';
+ if (isset($this->prefixDirsPsr4[$search])) {
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
+ if (file_exists($file = $dir . $pathEnd)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-4 fallback dirs
+ foreach ($this->fallbackDirsPsr4 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 lookup
+ if (false !== $pos = strrpos($class, '\\')) {
+ // namespaced class name
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+ } else {
+ // PEAR-like class name
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+ }
+
+ if (isset($this->prefixesPsr0[$first])) {
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-0 fallback dirs
+ foreach ($this->fallbackDirsPsr0 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 include paths.
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+ return $file;
+ }
+
+ return false;
+ }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+ include $file;
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/composer/LICENSE b/user/plugins/admin-addon-user-manager/vendor/composer/LICENSE
new file mode 100644
index 0000000..f27399a
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+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.
+
diff --git a/user/plugins/admin-addon-user-manager/vendor/composer/autoload_classmap.php b/user/plugins/admin-addon-user-manager/vendor/composer/autoload_classmap.php
new file mode 100644
index 0000000..3a14165
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/composer/autoload_classmap.php
@@ -0,0 +1,16 @@
+ $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
+ 'AssertionError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
+ 'DivisionByZeroError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
+ 'Error' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/Error.php',
+ 'ParseError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
+ 'SessionUpdateTimestampHandlerInterface' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
+ 'TypeError' => $vendorDir . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
+);
diff --git a/user/plugins/admin-addon-user-manager/vendor/composer/autoload_files.php b/user/plugins/admin-addon-user-manager/vendor/composer/autoload_files.php
new file mode 100644
index 0000000..268e870
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/composer/autoload_files.php
@@ -0,0 +1,10 @@
+ $vendorDir . '/symfony/polyfill-php70/bootstrap.php',
+);
diff --git a/user/plugins/admin-addon-user-manager/vendor/composer/autoload_namespaces.php b/user/plugins/admin-addon-user-manager/vendor/composer/autoload_namespaces.php
new file mode 100644
index 0000000..b7fc012
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,9 @@
+ array($vendorDir . '/symfony/polyfill-php70'),
+ 'Symfony\\Contracts\\Service\\' => array($vendorDir . '/symfony/service-contracts'),
+ 'Symfony\\Contracts\\Cache\\' => array($vendorDir . '/symfony/cache-contracts'),
+ 'Symfony\\Component\\VarExporter\\' => array($vendorDir . '/symfony/var-exporter'),
+ 'Symfony\\Component\\ExpressionLanguage\\' => array($vendorDir . '/symfony/expression-language'),
+ 'Symfony\\Component\\Cache\\' => array($vendorDir . '/symfony/cache'),
+ 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
+ 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
+ 'Psr\\Cache\\' => array($vendorDir . '/psr/cache/src'),
+ 'AdminAddonUserManager\\' => array($baseDir . '/src'),
+);
diff --git a/user/plugins/admin-addon-user-manager/vendor/composer/autoload_real.php b/user/plugins/admin-addon-user-manager/vendor/composer/autoload_real.php
new file mode 100644
index 0000000..7f50636
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/composer/autoload_real.php
@@ -0,0 +1,70 @@
+= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
+ if ($useStaticLoader) {
+ require_once __DIR__ . '/autoload_static.php';
+
+ call_user_func(\Composer\Autoload\ComposerStaticInit089ad2d043aed688879945cd4bcae11c::getInitializer($loader));
+ } else {
+ $map = require __DIR__ . '/autoload_namespaces.php';
+ foreach ($map as $namespace => $path) {
+ $loader->set($namespace, $path);
+ }
+
+ $map = require __DIR__ . '/autoload_psr4.php';
+ foreach ($map as $namespace => $path) {
+ $loader->setPsr4($namespace, $path);
+ }
+
+ $classMap = require __DIR__ . '/autoload_classmap.php';
+ if ($classMap) {
+ $loader->addClassMap($classMap);
+ }
+ }
+
+ $loader->register(true);
+
+ if ($useStaticLoader) {
+ $includeFiles = Composer\Autoload\ComposerStaticInit089ad2d043aed688879945cd4bcae11c::$files;
+ } else {
+ $includeFiles = require __DIR__ . '/autoload_files.php';
+ }
+ foreach ($includeFiles as $fileIdentifier => $file) {
+ composerRequire089ad2d043aed688879945cd4bcae11c($fileIdentifier, $file);
+ }
+
+ return $loader;
+ }
+}
+
+function composerRequire089ad2d043aed688879945cd4bcae11c($fileIdentifier, $file)
+{
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ require $file;
+
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/composer/autoload_static.php b/user/plugins/admin-addon-user-manager/vendor/composer/autoload_static.php
new file mode 100644
index 0000000..ace6766
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/composer/autoload_static.php
@@ -0,0 +1,97 @@
+ __DIR__ . '/..' . '/symfony/polyfill-php70/bootstrap.php',
+ );
+
+ public static $prefixLengthsPsr4 = array (
+ 'S' =>
+ array (
+ 'Symfony\\Polyfill\\Php70\\' => 23,
+ 'Symfony\\Contracts\\Service\\' => 26,
+ 'Symfony\\Contracts\\Cache\\' => 24,
+ 'Symfony\\Component\\VarExporter\\' => 30,
+ 'Symfony\\Component\\ExpressionLanguage\\' => 37,
+ 'Symfony\\Component\\Cache\\' => 24,
+ ),
+ 'P' =>
+ array (
+ 'Psr\\Log\\' => 8,
+ 'Psr\\Container\\' => 14,
+ 'Psr\\Cache\\' => 10,
+ ),
+ 'A' =>
+ array (
+ 'AdminAddonUserManager\\' => 22,
+ ),
+ );
+
+ public static $prefixDirsPsr4 = array (
+ 'Symfony\\Polyfill\\Php70\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/polyfill-php70',
+ ),
+ 'Symfony\\Contracts\\Service\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/service-contracts',
+ ),
+ 'Symfony\\Contracts\\Cache\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/cache-contracts',
+ ),
+ 'Symfony\\Component\\VarExporter\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/var-exporter',
+ ),
+ 'Symfony\\Component\\ExpressionLanguage\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/expression-language',
+ ),
+ 'Symfony\\Component\\Cache\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/symfony/cache',
+ ),
+ 'Psr\\Log\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
+ ),
+ 'Psr\\Container\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/container/src',
+ ),
+ 'Psr\\Cache\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/cache/src',
+ ),
+ 'AdminAddonUserManager\\' =>
+ array (
+ 0 => __DIR__ . '/../..' . '/src',
+ ),
+ );
+
+ public static $classMap = array (
+ 'ArithmeticError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php',
+ 'AssertionError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/AssertionError.php',
+ 'DivisionByZeroError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php',
+ 'Error' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/Error.php',
+ 'ParseError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/ParseError.php',
+ 'SessionUpdateTimestampHandlerInterface' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php',
+ 'TypeError' => __DIR__ . '/..' . '/symfony/polyfill-php70/Resources/stubs/TypeError.php',
+ );
+
+ public static function getInitializer(ClassLoader $loader)
+ {
+ return \Closure::bind(function () use ($loader) {
+ $loader->prefixLengthsPsr4 = ComposerStaticInit089ad2d043aed688879945cd4bcae11c::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInit089ad2d043aed688879945cd4bcae11c::$prefixDirsPsr4;
+ $loader->classMap = ComposerStaticInit089ad2d043aed688879945cd4bcae11c::$classMap;
+
+ }, null, ClassLoader::class);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/composer/installed.json b/user/plugins/admin-addon-user-manager/vendor/composer/installed.json
new file mode 100644
index 0000000..402ec27
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/composer/installed.json
@@ -0,0 +1,574 @@
+[
+ {
+ "name": "paragonie/random_compat",
+ "version": "v9.99.99",
+ "version_normalized": "9.99.99.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
+ "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*",
+ "vimeo/psalm": "^1"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "time": "2018-07-02T15:55:56+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "polyfill",
+ "pseudorandom",
+ "random"
+ ]
+ },
+ {
+ "name": "psr/cache",
+ "version": "1.0.1",
+ "version_normalized": "1.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2016-08-06T20:24:11+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ]
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2017-02-14T16:28:37+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ]
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.3",
+ "version_normalized": "1.1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2020-03-23T09:12:05+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ]
+ },
+ {
+ "name": "symfony/cache",
+ "version": "v4.4.7",
+ "version_normalized": "4.4.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache.git",
+ "reference": "f777b570291aebe51081b9827e05f3a747665e87"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/f777b570291aebe51081b9827e05f3a747665e87",
+ "reference": "f777b570291aebe51081b9827e05f3a747665e87",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/cache": "~1.0",
+ "psr/log": "~1.0",
+ "symfony/cache-contracts": "^1.1.7|^2",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.2|^5.0"
+ },
+ "conflict": {
+ "doctrine/dbal": "<2.5",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/http-kernel": "<4.4",
+ "symfony/var-dumper": "<4.4"
+ },
+ "provide": {
+ "psr/cache-implementation": "1.0",
+ "psr/simple-cache-implementation": "1.0",
+ "symfony/cache-implementation": "1.0"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/cache": "~1.6",
+ "doctrine/dbal": "~2.5",
+ "predis/predis": "~1.1",
+ "psr/simple-cache": "^1.0",
+ "symfony/config": "^4.2|^5.0",
+ "symfony/dependency-injection": "^3.4|^4.1|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "time": "2020-03-27T16:54:36+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Cache\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Cache component with PSR-6, PSR-16, and tags",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "caching",
+ "psr6"
+ ]
+ },
+ {
+ "name": "symfony/cache-contracts",
+ "version": "v2.0.1",
+ "version_normalized": "2.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/cache-contracts.git",
+ "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16",
+ "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5",
+ "psr/cache": "^1.0"
+ },
+ "suggest": {
+ "symfony/cache-implementation": ""
+ },
+ "time": "2019-11-18T17:27:11+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Cache\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to caching",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ]
+ },
+ {
+ "name": "symfony/expression-language",
+ "version": "v3.4.39",
+ "version_normalized": "3.4.39.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/expression-language.git",
+ "reference": "206165f46c660f3231df0afbdeec6a62f81afc59"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/expression-language/zipball/206165f46c660f3231df0afbdeec6a62f81afc59",
+ "reference": "206165f46c660f3231df0afbdeec6a62f81afc59",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/cache": "~3.1|~4.0",
+ "symfony/polyfill-php70": "~1.6"
+ },
+ "time": "2020-03-16T08:31:04+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\ExpressionLanguage\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony ExpressionLanguage Component",
+ "homepage": "https://symfony.com"
+ },
+ {
+ "name": "symfony/polyfill-php70",
+ "version": "v1.15.0",
+ "version_normalized": "1.15.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php70.git",
+ "reference": "2a18e37a489803559284416df58c71ccebe50bf0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/2a18e37a489803559284416df58c71ccebe50bf0",
+ "reference": "2a18e37a489803559284416df58c71ccebe50bf0",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": "~1.0|~2.0|~9.99",
+ "php": ">=5.3.3"
+ },
+ "time": "2020-02-27T09:26:54+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.15-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php70\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ]
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.0.1",
+ "version_normalized": "2.0.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "144c5e51266b281231e947b51223ba14acf1a749"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749",
+ "reference": "144c5e51266b281231e947b51223ba14acf1a749",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "time": "2019-11-18T17:27:11+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ]
+ },
+ {
+ "name": "symfony/var-exporter",
+ "version": "v5.0.7",
+ "version_normalized": "5.0.7.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/var-exporter.git",
+ "reference": "ffd29a70370e466343e33154b5df197a07a13afa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/ffd29a70370e466343e33154b5df197a07a13afa",
+ "reference": "ffd29a70370e466343e33154b5df197a07a13afa",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2.5"
+ },
+ "require-dev": {
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "time": "2020-03-27T16:56:45+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\VarExporter\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "clone",
+ "construct",
+ "export",
+ "hydrate",
+ "instantiate",
+ "serialize"
+ ]
+ }
+]
diff --git a/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/LICENSE b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/LICENSE
new file mode 100644
index 0000000..45c7017
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/LICENSE
@@ -0,0 +1,22 @@
+The MIT License (MIT)
+
+Copyright (c) 2015 Paragon Initiative Enterprises
+
+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.
+
diff --git a/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/build-phar.sh b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/build-phar.sh
new file mode 100644
index 0000000..b4a5ba3
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/build-phar.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+
+basedir=$( dirname $( readlink -f ${BASH_SOURCE[0]} ) )
+
+php -dphar.readonly=0 "$basedir/other/build_phar.php" $*
\ No newline at end of file
diff --git a/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/composer.json b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/composer.json
new file mode 100644
index 0000000..1fa8de9
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "paragonie/random_compat",
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "random",
+ "polyfill",
+ "pseudorandom"
+ ],
+ "license": "MIT",
+ "type": "library",
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/paragonie/random_compat/issues",
+ "email": "info@paragonie.com",
+ "source": "https://github.com/paragonie/random_compat"
+ },
+ "require": {
+ "php": "^7"
+ },
+ "require-dev": {
+ "vimeo/psalm": "^1",
+ "phpunit/phpunit": "4.*|5.*"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey
new file mode 100644
index 0000000..eb50ebf
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey
@@ -0,0 +1,5 @@
+-----BEGIN PUBLIC KEY-----
+MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEEd+wCqJDrx5B4OldM0dQE0ZMX+lx1ZWm
+pui0SUqD4G29L3NGsz9UhJ/0HjBdbnkhIK5xviT0X5vtjacF6ajgcCArbTB+ds+p
++h7Q084NuSuIpNb6YPfoUFgC/CL9kAoc
+-----END PUBLIC KEY-----
diff --git a/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc
new file mode 100644
index 0000000..6a1d7f3
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.22 (MingW32)
+
+iQEcBAABAgAGBQJWtW1hAAoJEGuXocKCZATaJf0H+wbZGgskK1dcRTsuVJl9IWip
+QwGw/qIKI280SD6/ckoUMxKDCJiFuPR14zmqnS36k7N5UNPnpdTJTS8T11jttSpg
+1LCmgpbEIpgaTah+cELDqFCav99fS+bEiAL5lWDAHBTE/XPjGVCqeehyPYref4IW
+NDBIEsvnHPHPLsn6X5jq4+Yj5oUixgxaMPiR+bcO4Sh+RzOVB6i2D0upWfRXBFXA
+NNnsg9/zjvoC7ZW73y9uSH+dPJTt/Vgfeiv52/v41XliyzbUyLalf02GNPY+9goV
+JHG1ulEEBJOCiUD9cE1PUIJwHA/HqyhHIvV350YoEFiHl8iSwm7SiZu5kPjaq74=
+=B6+8
+-----END PGP SIGNATURE-----
diff --git a/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/lib/random.php b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/lib/random.php
new file mode 100644
index 0000000..c7731a5
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/lib/random.php
@@ -0,0 +1,32 @@
+buildFromDirectory(dirname(__DIR__).'/lib');
+rename(
+ dirname(__DIR__).'/lib/index.php',
+ dirname(__DIR__).'/lib/random.php'
+);
+
+/**
+ * If we pass an (optional) path to a private key as a second argument, we will
+ * sign the Phar with OpenSSL.
+ *
+ * If you leave this out, it will produce an unsigned .phar!
+ */
+if ($argc > 1) {
+ if (!@is_readable($argv[1])) {
+ echo 'Could not read the private key file:', $argv[1], "\n";
+ exit(255);
+ }
+ $pkeyFile = file_get_contents($argv[1]);
+
+ $private = openssl_get_privatekey($pkeyFile);
+ if ($private !== false) {
+ $pkey = '';
+ openssl_pkey_export($private, $pkey);
+ $phar->setSignatureAlgorithm(Phar::OPENSSL, $pkey);
+
+ /**
+ * Save the corresponding public key to the file
+ */
+ if (!@is_readable($dist.'/random_compat.phar.pubkey')) {
+ $details = openssl_pkey_get_details($private);
+ file_put_contents(
+ $dist.'/random_compat.phar.pubkey',
+ $details['key']
+ );
+ }
+ } else {
+ echo 'An error occurred reading the private key from OpenSSL.', "\n";
+ exit(255);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/psalm-autoload.php b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/psalm-autoload.php
new file mode 100644
index 0000000..d71d1b8
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/paragonie/random_compat/psalm-autoload.php
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/cache/CHANGELOG.md b/user/plugins/admin-addon-user-manager/vendor/psr/cache/CHANGELOG.md
new file mode 100644
index 0000000..58ddab0
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/cache/CHANGELOG.md
@@ -0,0 +1,16 @@
+# Changelog
+
+All notable changes to this project will be documented in this file, in reverse chronological order by release.
+
+## 1.0.1 - 2016-08-06
+
+### Fixed
+
+- Make spacing consistent in phpdoc annotations php-fig/cache#9 - chalasr
+- Fix grammar in phpdoc annotations php-fig/cache#10 - chalasr
+- Be more specific in docblocks that `getItems()` and `deleteItems()` take an array of strings (`string[]`) compared to just `array` php-fig/cache#8 - GrahamCampbell
+- For `expiresAt()` and `expiresAfter()` in CacheItemInterface fix docblock to specify null as a valid parameters as well as an implementation of DateTimeInterface php-fig/cache#7 - GrahamCampbell
+
+## 1.0.0 - 2015-12-11
+
+Initial stable release; reflects accepted PSR-6 specification
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/cache/LICENSE.txt b/user/plugins/admin-addon-user-manager/vendor/psr/cache/LICENSE.txt
new file mode 100644
index 0000000..b1c2c97
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/cache/LICENSE.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2015 PHP Framework Interoperability Group
+
+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.
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/cache/README.md b/user/plugins/admin-addon-user-manager/vendor/psr/cache/README.md
new file mode 100644
index 0000000..c8706ce
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/cache/README.md
@@ -0,0 +1,9 @@
+PSR Cache
+=========
+
+This repository holds all interfaces defined by
+[PSR-6](http://www.php-fig.org/psr/psr-6/).
+
+Note that this is not a Cache implementation of its own. It is merely an
+interface that describes a Cache implementation. See the specification for more
+details.
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/cache/composer.json b/user/plugins/admin-addon-user-manager/vendor/psr/cache/composer.json
new file mode 100644
index 0000000..e828fec
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/cache/composer.json
@@ -0,0 +1,25 @@
+{
+ "name": "psr/cache",
+ "description": "Common interface for caching libraries",
+ "keywords": ["psr", "psr-6", "cache"],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/cache/src/CacheException.php b/user/plugins/admin-addon-user-manager/vendor/psr/cache/src/CacheException.php
new file mode 100644
index 0000000..e27f22f
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/cache/src/CacheException.php
@@ -0,0 +1,10 @@
+=5.3.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/container/src/ContainerExceptionInterface.php b/user/plugins/admin-addon-user-manager/vendor/psr/container/src/ContainerExceptionInterface.php
new file mode 100644
index 0000000..d35c6b4
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/container/src/ContainerExceptionInterface.php
@@ -0,0 +1,13 @@
+log(LogLevel::EMERGENCY, $message, $context);
+ }
+
+ /**
+ * Action must be taken immediately.
+ *
+ * Example: Entire website down, database unavailable, etc. This should
+ * trigger the SMS alerts and wake you up.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function alert($message, array $context = array())
+ {
+ $this->log(LogLevel::ALERT, $message, $context);
+ }
+
+ /**
+ * Critical conditions.
+ *
+ * Example: Application component unavailable, unexpected exception.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function critical($message, array $context = array())
+ {
+ $this->log(LogLevel::CRITICAL, $message, $context);
+ }
+
+ /**
+ * Runtime errors that do not require immediate action but should typically
+ * be logged and monitored.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function error($message, array $context = array())
+ {
+ $this->log(LogLevel::ERROR, $message, $context);
+ }
+
+ /**
+ * Exceptional occurrences that are not errors.
+ *
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
+ * that are not necessarily wrong.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function warning($message, array $context = array())
+ {
+ $this->log(LogLevel::WARNING, $message, $context);
+ }
+
+ /**
+ * Normal but significant events.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function notice($message, array $context = array())
+ {
+ $this->log(LogLevel::NOTICE, $message, $context);
+ }
+
+ /**
+ * Interesting events.
+ *
+ * Example: User logs in, SQL logs.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function info($message, array $context = array())
+ {
+ $this->log(LogLevel::INFO, $message, $context);
+ }
+
+ /**
+ * Detailed debug information.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function debug($message, array $context = array())
+ {
+ $this->log(LogLevel::DEBUG, $message, $context);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/InvalidArgumentException.php b/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/InvalidArgumentException.php
new file mode 100644
index 0000000..67f852d
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/InvalidArgumentException.php
@@ -0,0 +1,7 @@
+logger = $logger;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/LoggerInterface.php b/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/LoggerInterface.php
new file mode 100644
index 0000000..2206cfd
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/LoggerInterface.php
@@ -0,0 +1,125 @@
+log(LogLevel::EMERGENCY, $message, $context);
+ }
+
+ /**
+ * Action must be taken immediately.
+ *
+ * Example: Entire website down, database unavailable, etc. This should
+ * trigger the SMS alerts and wake you up.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function alert($message, array $context = array())
+ {
+ $this->log(LogLevel::ALERT, $message, $context);
+ }
+
+ /**
+ * Critical conditions.
+ *
+ * Example: Application component unavailable, unexpected exception.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function critical($message, array $context = array())
+ {
+ $this->log(LogLevel::CRITICAL, $message, $context);
+ }
+
+ /**
+ * Runtime errors that do not require immediate action but should typically
+ * be logged and monitored.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function error($message, array $context = array())
+ {
+ $this->log(LogLevel::ERROR, $message, $context);
+ }
+
+ /**
+ * Exceptional occurrences that are not errors.
+ *
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
+ * that are not necessarily wrong.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function warning($message, array $context = array())
+ {
+ $this->log(LogLevel::WARNING, $message, $context);
+ }
+
+ /**
+ * Normal but significant events.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function notice($message, array $context = array())
+ {
+ $this->log(LogLevel::NOTICE, $message, $context);
+ }
+
+ /**
+ * Interesting events.
+ *
+ * Example: User logs in, SQL logs.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function info($message, array $context = array())
+ {
+ $this->log(LogLevel::INFO, $message, $context);
+ }
+
+ /**
+ * Detailed debug information.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function debug($message, array $context = array())
+ {
+ $this->log(LogLevel::DEBUG, $message, $context);
+ }
+
+ /**
+ * Logs with an arbitrary level.
+ *
+ * @param mixed $level
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ *
+ * @throws \Psr\Log\InvalidArgumentException
+ */
+ abstract public function log($level, $message, array $context = array());
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/NullLogger.php b/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/NullLogger.php
new file mode 100644
index 0000000..c8f7293
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/NullLogger.php
@@ -0,0 +1,30 @@
+logger) { }`
+ * blocks.
+ */
+class NullLogger extends AbstractLogger
+{
+ /**
+ * Logs with an arbitrary level.
+ *
+ * @param mixed $level
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ *
+ * @throws \Psr\Log\InvalidArgumentException
+ */
+ public function log($level, $message, array $context = array())
+ {
+ // noop
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/Test/DummyTest.php b/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/Test/DummyTest.php
new file mode 100644
index 0000000..9638c11
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/Test/DummyTest.php
@@ -0,0 +1,18 @@
+ ".
+ *
+ * Example ->error('Foo') would yield "error Foo".
+ *
+ * @return string[]
+ */
+ abstract public function getLogs();
+
+ public function testImplements()
+ {
+ $this->assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger());
+ }
+
+ /**
+ * @dataProvider provideLevelsAndMessages
+ */
+ public function testLogsAtAllLevels($level, $message)
+ {
+ $logger = $this->getLogger();
+ $logger->{$level}($message, array('user' => 'Bob'));
+ $logger->log($level, $message, array('user' => 'Bob'));
+
+ $expected = array(
+ $level.' message of level '.$level.' with context: Bob',
+ $level.' message of level '.$level.' with context: Bob',
+ );
+ $this->assertEquals($expected, $this->getLogs());
+ }
+
+ public function provideLevelsAndMessages()
+ {
+ return array(
+ LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'),
+ LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'),
+ LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'),
+ LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'),
+ LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'),
+ LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'),
+ LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'),
+ LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'),
+ );
+ }
+
+ /**
+ * @expectedException \Psr\Log\InvalidArgumentException
+ */
+ public function testThrowsOnInvalidLevel()
+ {
+ $logger = $this->getLogger();
+ $logger->log('invalid level', 'Foo');
+ }
+
+ public function testContextReplacement()
+ {
+ $logger = $this->getLogger();
+ $logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar'));
+
+ $expected = array('info {Message {nothing} Bob Bar a}');
+ $this->assertEquals($expected, $this->getLogs());
+ }
+
+ public function testObjectCastToString()
+ {
+ if (method_exists($this, 'createPartialMock')) {
+ $dummy = $this->createPartialMock('Psr\Log\Test\DummyTest', array('__toString'));
+ } else {
+ $dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString'));
+ }
+ $dummy->expects($this->once())
+ ->method('__toString')
+ ->will($this->returnValue('DUMMY'));
+
+ $this->getLogger()->warning($dummy);
+
+ $expected = array('warning DUMMY');
+ $this->assertEquals($expected, $this->getLogs());
+ }
+
+ public function testContextCanContainAnything()
+ {
+ $closed = fopen('php://memory', 'r');
+ fclose($closed);
+
+ $context = array(
+ 'bool' => true,
+ 'null' => null,
+ 'string' => 'Foo',
+ 'int' => 0,
+ 'float' => 0.5,
+ 'nested' => array('with object' => new DummyTest),
+ 'object' => new \DateTime,
+ 'resource' => fopen('php://memory', 'r'),
+ 'closed' => $closed,
+ );
+
+ $this->getLogger()->warning('Crazy context data', $context);
+
+ $expected = array('warning Crazy context data');
+ $this->assertEquals($expected, $this->getLogs());
+ }
+
+ public function testContextExceptionKeyCanBeExceptionOrOtherValues()
+ {
+ $logger = $this->getLogger();
+ $logger->warning('Random message', array('exception' => 'oops'));
+ $logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail')));
+
+ $expected = array(
+ 'warning Random message',
+ 'critical Uncaught Exception!'
+ );
+ $this->assertEquals($expected, $this->getLogs());
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/Test/TestLogger.php b/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/Test/TestLogger.php
new file mode 100644
index 0000000..1be3230
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/log/Psr/Log/Test/TestLogger.php
@@ -0,0 +1,147 @@
+ $level,
+ 'message' => $message,
+ 'context' => $context,
+ ];
+
+ $this->recordsByLevel[$record['level']][] = $record;
+ $this->records[] = $record;
+ }
+
+ public function hasRecords($level)
+ {
+ return isset($this->recordsByLevel[$level]);
+ }
+
+ public function hasRecord($record, $level)
+ {
+ if (is_string($record)) {
+ $record = ['message' => $record];
+ }
+ return $this->hasRecordThatPasses(function ($rec) use ($record) {
+ if ($rec['message'] !== $record['message']) {
+ return false;
+ }
+ if (isset($record['context']) && $rec['context'] !== $record['context']) {
+ return false;
+ }
+ return true;
+ }, $level);
+ }
+
+ public function hasRecordThatContains($message, $level)
+ {
+ return $this->hasRecordThatPasses(function ($rec) use ($message) {
+ return strpos($rec['message'], $message) !== false;
+ }, $level);
+ }
+
+ public function hasRecordThatMatches($regex, $level)
+ {
+ return $this->hasRecordThatPasses(function ($rec) use ($regex) {
+ return preg_match($regex, $rec['message']) > 0;
+ }, $level);
+ }
+
+ public function hasRecordThatPasses(callable $predicate, $level)
+ {
+ if (!isset($this->recordsByLevel[$level])) {
+ return false;
+ }
+ foreach ($this->recordsByLevel[$level] as $i => $rec) {
+ if (call_user_func($predicate, $rec, $i)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public function __call($method, $args)
+ {
+ if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) {
+ $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3];
+ $level = strtolower($matches[2]);
+ if (method_exists($this, $genericMethod)) {
+ $args[] = $level;
+ return call_user_func_array([$this, $genericMethod], $args);
+ }
+ }
+ throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()');
+ }
+
+ public function reset()
+ {
+ $this->records = [];
+ $this->recordsByLevel = [];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/log/README.md b/user/plugins/admin-addon-user-manager/vendor/psr/log/README.md
new file mode 100644
index 0000000..a9f20c4
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/log/README.md
@@ -0,0 +1,58 @@
+PSR Log
+=======
+
+This repository holds all interfaces/classes/traits related to
+[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md).
+
+Note that this is not a logger of its own. It is merely an interface that
+describes a logger. See the specification for more details.
+
+Installation
+------------
+
+```bash
+composer require psr/log
+```
+
+Usage
+-----
+
+If you need a logger, you can use the interface like this:
+
+```php
+logger = $logger;
+ }
+
+ public function doSomething()
+ {
+ if ($this->logger) {
+ $this->logger->info('Doing work');
+ }
+
+ try {
+ $this->doSomethingElse();
+ } catch (Exception $exception) {
+ $this->logger->error('Oh no!', array('exception' => $exception));
+ }
+
+ // do something useful
+ }
+}
+```
+
+You can then pick one of the implementations of the interface to get a logger.
+
+If you want to implement the interface, you can require this package and
+implement `Psr\Log\LoggerInterface` in your code. Please read the
+[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
+for details.
diff --git a/user/plugins/admin-addon-user-manager/vendor/psr/log/composer.json b/user/plugins/admin-addon-user-manager/vendor/psr/log/composer.json
new file mode 100644
index 0000000..3f6d4ee
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/psr/log/composer.json
@@ -0,0 +1,26 @@
+{
+ "name": "psr/log",
+ "description": "Common interface for logging libraries",
+ "keywords": ["psr", "psr-3", "log"],
+ "homepage": "https://github.com/php-fig/log",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/.gitignore b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/.gitignore
new file mode 100644
index 0000000..c49a5d8
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/.gitignore
@@ -0,0 +1,3 @@
+vendor/
+composer.lock
+phpunit.xml
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/CacheInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/CacheInterface.php
new file mode 100644
index 0000000..4b1686b
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/CacheInterface.php
@@ -0,0 +1,57 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Cache;
+
+use Psr\Cache\CacheItemInterface;
+use Psr\Cache\InvalidArgumentException;
+
+/**
+ * Covers most simple to advanced caching needs.
+ *
+ * @author Nicolas Grekas
+ */
+interface CacheInterface
+{
+ /**
+ * Fetches a value from the pool or computes it if not found.
+ *
+ * On cache misses, a callback is called that should return the missing value.
+ * This callback is given a PSR-6 CacheItemInterface instance corresponding to the
+ * requested key, that could be used e.g. for expiration control. It could also
+ * be an ItemInterface instance when its additional features are needed.
+ *
+ * @param string $key The key of the item to retrieve from the cache
+ * @param callable|CallbackInterface $callback Should return the computed value for the given key/item
+ * @param float|null $beta A float that, as it grows, controls the likeliness of triggering
+ * early expiration. 0 disables it, INF forces immediate expiration.
+ * The default (or providing null) is implementation dependent but should
+ * typically be 1.0, which should provide optimal stampede protection.
+ * See https://en.wikipedia.org/wiki/Cache_stampede#Probabilistic_early_expiration
+ * @param array &$metadata The metadata of the cached item {@see ItemInterface::getMetadata()}
+ *
+ * @return mixed The value corresponding to the provided key
+ *
+ * @throws InvalidArgumentException When $key is not valid or when $beta is negative
+ */
+ public function get(string $key, callable $callback, float $beta = null, array &$metadata = null);
+
+ /**
+ * Removes an item from the pool.
+ *
+ * @param string $key The key to delete
+ *
+ * @throws InvalidArgumentException When $key is not valid
+ *
+ * @return bool True if the item was successfully removed, false if there was any error
+ */
+ public function delete(string $key): bool;
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/CacheTrait.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/CacheTrait.php
new file mode 100644
index 0000000..355ea29
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/CacheTrait.php
@@ -0,0 +1,76 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Cache;
+
+use Psr\Cache\CacheItemPoolInterface;
+use Psr\Cache\InvalidArgumentException;
+use Psr\Log\LoggerInterface;
+
+/**
+ * An implementation of CacheInterface for PSR-6 CacheItemPoolInterface classes.
+ *
+ * @author Nicolas Grekas
+ */
+trait CacheTrait
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function get(string $key, callable $callback, float $beta = null, array &$metadata = null)
+ {
+ return $this->doGet($this, $key, $callback, $beta, $metadata);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function delete(string $key): bool
+ {
+ return $this->deleteItem($key);
+ }
+
+ private function doGet(CacheItemPoolInterface $pool, string $key, callable $callback, ?float $beta, array &$metadata = null, LoggerInterface $logger = null)
+ {
+ if (0 > $beta = $beta ?? 1.0) {
+ throw new class(sprintf('Argument "$beta" provided to "%s::get()" must be a positive number, %f given.', \get_class($this), $beta)) extends \InvalidArgumentException implements InvalidArgumentException {
+ };
+ }
+
+ $item = $pool->getItem($key);
+ $recompute = !$item->isHit() || INF === $beta;
+ $metadata = $item instanceof ItemInterface ? $item->getMetadata() : [];
+
+ if (!$recompute && $metadata) {
+ $expiry = $metadata[ItemInterface::METADATA_EXPIRY] ?? false;
+ $ctime = $metadata[ItemInterface::METADATA_CTIME] ?? false;
+
+ if ($recompute = $ctime && $expiry && $expiry <= ($now = microtime(true)) - $ctime / 1000 * $beta * log(random_int(1, PHP_INT_MAX) / PHP_INT_MAX)) {
+ // force applying defaultLifetime to expiry
+ $item->expiresAt(null);
+ $logger && $logger->info('Item "{key}" elected for early recomputation {delta}s before its expiration', [
+ 'key' => $key,
+ 'delta' => sprintf('%.1f', $expiry - $now),
+ ]);
+ }
+ }
+
+ if ($recompute) {
+ $save = true;
+ $item->set($callback($item, $save));
+ if ($save) {
+ $pool->save($item);
+ }
+ }
+
+ return $item->get();
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/CallbackInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/CallbackInterface.php
new file mode 100644
index 0000000..7dae2aa
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/CallbackInterface.php
@@ -0,0 +1,30 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Cache;
+
+use Psr\Cache\CacheItemInterface;
+
+/**
+ * Computes and returns the cached value of an item.
+ *
+ * @author Nicolas Grekas
+ */
+interface CallbackInterface
+{
+ /**
+ * @param CacheItemInterface|ItemInterface $item The item to compute the value for
+ * @param bool &$save Should be set to false when the value should not be saved in the pool
+ *
+ * @return mixed The computed value for the passed item
+ */
+ public function __invoke(CacheItemInterface $item, bool &$save);
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/ItemInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/ItemInterface.php
new file mode 100644
index 0000000..cbd7226
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/ItemInterface.php
@@ -0,0 +1,65 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Cache;
+
+use Psr\Cache\CacheException;
+use Psr\Cache\CacheItemInterface;
+use Psr\Cache\InvalidArgumentException;
+
+/**
+ * Augments PSR-6's CacheItemInterface with support for tags and metadata.
+ *
+ * @author Nicolas Grekas
+ */
+interface ItemInterface extends CacheItemInterface
+{
+ /**
+ * References the Unix timestamp stating when the item will expire.
+ */
+ const METADATA_EXPIRY = 'expiry';
+
+ /**
+ * References the time the item took to be created, in milliseconds.
+ */
+ const METADATA_CTIME = 'ctime';
+
+ /**
+ * References the list of tags that were assigned to the item, as string[].
+ */
+ const METADATA_TAGS = 'tags';
+
+ /**
+ * Reserved characters that cannot be used in a key or tag.
+ */
+ const RESERVED_CHARACTERS = '{}()/\@:';
+
+ /**
+ * Adds a tag to a cache item.
+ *
+ * Tags are strings that follow the same validation rules as keys.
+ *
+ * @param string|string[] $tags A tag or array of tags
+ *
+ * @return $this
+ *
+ * @throws InvalidArgumentException When $tag is not valid
+ * @throws CacheException When the item comes from a pool that is not tag-aware
+ */
+ public function tag($tags): self;
+
+ /**
+ * Returns a list of metadata info that were saved alongside with the cached value.
+ *
+ * See ItemInterface::METADATA_* consts for keys potentially found in the returned array.
+ */
+ public function getMetadata(): array;
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/LICENSE b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/LICENSE
new file mode 100644
index 0000000..3f853aa
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2018-2019 Fabien Potencier
+
+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.
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/README.md b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/README.md
new file mode 100644
index 0000000..58c589e
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/README.md
@@ -0,0 +1,9 @@
+Symfony Cache Contracts
+=======================
+
+A set of abstractions extracted out of the Symfony components.
+
+Can be used to build on semantics that the Symfony components proved useful - and
+that already have battle tested implementations.
+
+See https://github.com/symfony/contracts/blob/master/README.md for more information.
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/TagAwareCacheInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/TagAwareCacheInterface.php
new file mode 100644
index 0000000..7c4cf11
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/TagAwareCacheInterface.php
@@ -0,0 +1,38 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Cache;
+
+use Psr\Cache\InvalidArgumentException;
+
+/**
+ * Allows invalidating cached items using tags.
+ *
+ * @author Nicolas Grekas
+ */
+interface TagAwareCacheInterface extends CacheInterface
+{
+ /**
+ * Invalidates cached items using tags.
+ *
+ * When implemented on a PSR-6 pool, invalidation should not apply
+ * to deferred items. Instead, they should be committed as usual.
+ * This allows replacing old tagged values by new ones without
+ * race conditions.
+ *
+ * @param string[] $tags An array of tags to invalidate
+ *
+ * @return bool True on success
+ *
+ * @throws InvalidArgumentException When $tags is not valid
+ */
+ public function invalidateTags(array $tags);
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/composer.json b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/composer.json
new file mode 100644
index 0000000..c9cf8b5
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache-contracts/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "symfony/cache-contracts",
+ "type": "library",
+ "description": "Generic abstractions related to caching",
+ "keywords": ["abstractions", "contracts", "decoupling", "interfaces", "interoperability", "standards"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": "^7.2.5",
+ "psr/cache": "^1.0"
+ },
+ "suggest": {
+ "symfony/cache-implementation": ""
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Contracts\\Cache\\": "" }
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/AbstractAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/AbstractAdapter.php
new file mode 100644
index 0000000..79ecf3c
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/AbstractAdapter.php
@@ -0,0 +1,203 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Psr\Log\LoggerAwareInterface;
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\AbstractAdapterTrait;
+use Symfony\Component\Cache\Traits\ContractsTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+/**
+ * @author Nicolas Grekas
+ */
+abstract class AbstractAdapter implements AdapterInterface, CacheInterface, LoggerAwareInterface, ResettableInterface
+{
+ /**
+ * @internal
+ */
+ protected const NS_SEPARATOR = ':';
+
+ use AbstractAdapterTrait;
+ use ContractsTrait;
+
+ private static $apcuSupported;
+ private static $phpFilesSupported;
+
+ protected function __construct(string $namespace = '', int $defaultLifetime = 0)
+ {
+ $this->namespace = '' === $namespace ? '' : CacheItem::validateKey($namespace).static::NS_SEPARATOR;
+ if (null !== $this->maxIdLength && \strlen($namespace) > $this->maxIdLength - 24) {
+ throw new InvalidArgumentException(sprintf('Namespace must be %d chars max, %d given ("%s").', $this->maxIdLength - 24, \strlen($namespace), $namespace));
+ }
+ $this->createCacheItem = \Closure::bind(
+ static function ($key, $value, $isHit) use ($defaultLifetime) {
+ $item = new CacheItem();
+ $item->key = $key;
+ $item->value = $v = $value;
+ $item->isHit = $isHit;
+ $item->defaultLifetime = $defaultLifetime;
+ // Detect wrapped values that encode for their expiry and creation duration
+ // For compactness, these values are packed in the key of an array using
+ // magic numbers in the form 9D-..-..-..-..-00-..-..-..-5F
+ if (\is_array($v) && 1 === \count($v) && 10 === \strlen($k = key($v)) && "\x9D" === $k[0] && "\0" === $k[5] && "\x5F" === $k[9]) {
+ $item->value = $v[$k];
+ $v = unpack('Ve/Nc', substr($k, 1, -1));
+ $item->metadata[CacheItem::METADATA_EXPIRY] = $v['e'] + CacheItem::METADATA_EXPIRY_OFFSET;
+ $item->metadata[CacheItem::METADATA_CTIME] = $v['c'];
+ }
+
+ return $item;
+ },
+ null,
+ CacheItem::class
+ );
+ $getId = \Closure::fromCallable([$this, 'getId']);
+ $this->mergeByLifetime = \Closure::bind(
+ static function ($deferred, $namespace, &$expiredIds) use ($getId) {
+ $byLifetime = [];
+ $now = microtime(true);
+ $expiredIds = [];
+
+ foreach ($deferred as $key => $item) {
+ $key = (string) $key;
+ if (null === $item->expiry) {
+ $ttl = 0 < $item->defaultLifetime ? $item->defaultLifetime : 0;
+ } elseif (0 >= $ttl = (int) (0.1 + $item->expiry - $now)) {
+ $expiredIds[] = $getId($key);
+ continue;
+ }
+ if (isset(($metadata = $item->newMetadata)[CacheItem::METADATA_TAGS])) {
+ unset($metadata[CacheItem::METADATA_TAGS]);
+ }
+ // For compactness, expiry and creation duration are packed in the key of an array, using magic numbers as separators
+ $byLifetime[$ttl][$getId($key)] = $metadata ? ["\x9D".pack('VN', (int) (0.1 + $metadata[self::METADATA_EXPIRY] - self::METADATA_EXPIRY_OFFSET), $metadata[self::METADATA_CTIME])."\x5F" => $item->value] : $item->value;
+ }
+
+ return $byLifetime;
+ },
+ null,
+ CacheItem::class
+ );
+ }
+
+ /**
+ * Returns the best possible adapter that your runtime supports.
+ *
+ * Using ApcuAdapter makes system caches compatible with read-only filesystems.
+ *
+ * @param string $namespace
+ * @param int $defaultLifetime
+ * @param string $version
+ * @param string $directory
+ *
+ * @return AdapterInterface
+ */
+ public static function createSystemCache($namespace, $defaultLifetime, $version, $directory, LoggerInterface $logger = null)
+ {
+ $opcache = new PhpFilesAdapter($namespace, $defaultLifetime, $directory, true);
+ if (null !== $logger) {
+ $opcache->setLogger($logger);
+ }
+
+ if (!self::$apcuSupported = self::$apcuSupported ?? ApcuAdapter::isSupported()) {
+ return $opcache;
+ }
+
+ $apcu = new ApcuAdapter($namespace, (int) $defaultLifetime / 5, $version);
+ if ('cli' === \PHP_SAPI && !filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN)) {
+ $apcu->setLogger(new NullLogger());
+ } elseif (null !== $logger) {
+ $apcu->setLogger($logger);
+ }
+
+ return new ChainAdapter([$apcu, $opcache]);
+ }
+
+ public static function createConnection($dsn, array $options = [])
+ {
+ if (!\is_string($dsn)) {
+ throw new InvalidArgumentException(sprintf('The "%s()" method expect argument #1 to be string, "%s" given.', __METHOD__, \gettype($dsn)));
+ }
+ if (0 === strpos($dsn, 'redis:') || 0 === strpos($dsn, 'rediss:')) {
+ return RedisAdapter::createConnection($dsn, $options);
+ }
+ if (0 === strpos($dsn, 'memcached:')) {
+ return MemcachedAdapter::createConnection($dsn, $options);
+ }
+
+ throw new InvalidArgumentException(sprintf('Unsupported DSN: "%s".', $dsn));
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function commit()
+ {
+ $ok = true;
+ $byLifetime = $this->mergeByLifetime;
+ $byLifetime = $byLifetime($this->deferred, $this->namespace, $expiredIds);
+ $retry = $this->deferred = [];
+
+ if ($expiredIds) {
+ $this->doDelete($expiredIds);
+ }
+ foreach ($byLifetime as $lifetime => $values) {
+ try {
+ $e = $this->doSave($values, $lifetime);
+ } catch (\Exception $e) {
+ }
+ if (true === $e || [] === $e) {
+ continue;
+ }
+ if (\is_array($e) || 1 === \count($values)) {
+ foreach (\is_array($e) ? $e : array_keys($values) as $id) {
+ $ok = false;
+ $v = $values[$id];
+ $type = \is_object($v) ? \get_class($v) : \gettype($v);
+ $message = sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ CacheItem::log($this->logger, $message, ['key' => substr($id, \strlen($this->namespace)), 'exception' => $e instanceof \Exception ? $e : null]);
+ }
+ } else {
+ foreach ($values as $id => $v) {
+ $retry[$lifetime][] = $id;
+ }
+ }
+ }
+
+ // When bulk-save failed, retry each item individually
+ foreach ($retry as $lifetime => $ids) {
+ foreach ($ids as $id) {
+ try {
+ $v = $byLifetime[$lifetime][$id];
+ $e = $this->doSave([$id => $v], $lifetime);
+ } catch (\Exception $e) {
+ }
+ if (true === $e || [] === $e) {
+ continue;
+ }
+ $ok = false;
+ $type = \is_object($v) ? \get_class($v) : \gettype($v);
+ $message = sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ CacheItem::log($this->logger, $message, ['key' => substr($id, \strlen($this->namespace)), 'exception' => $e instanceof \Exception ? $e : null]);
+ }
+ }
+
+ return $ok;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/AbstractTagAwareAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/AbstractTagAwareAdapter.php
new file mode 100644
index 0000000..5a9f94b
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/AbstractTagAwareAdapter.php
@@ -0,0 +1,323 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Psr\Log\LoggerAwareInterface;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\AbstractAdapterTrait;
+use Symfony\Component\Cache\Traits\ContractsTrait;
+use Symfony\Contracts\Cache\TagAwareCacheInterface;
+
+/**
+ * Abstract for native TagAware adapters.
+ *
+ * To keep info on tags, the tags are both serialized as part of cache value and provided as tag ids
+ * to Adapters on operations when needed for storage to doSave(), doDelete() & doInvalidate().
+ *
+ * @author Nicolas Grekas
+ * @author André Rømcke
+ *
+ * @internal
+ */
+abstract class AbstractTagAwareAdapter implements TagAwareAdapterInterface, TagAwareCacheInterface, LoggerAwareInterface, ResettableInterface
+{
+ use AbstractAdapterTrait;
+ use ContractsTrait;
+
+ private const TAGS_PREFIX = "\0tags\0";
+
+ protected function __construct(string $namespace = '', int $defaultLifetime = 0)
+ {
+ $this->namespace = '' === $namespace ? '' : CacheItem::validateKey($namespace).':';
+ if (null !== $this->maxIdLength && \strlen($namespace) > $this->maxIdLength - 24) {
+ throw new InvalidArgumentException(sprintf('Namespace must be %d chars max, %d given ("%s").', $this->maxIdLength - 24, \strlen($namespace), $namespace));
+ }
+ $this->createCacheItem = \Closure::bind(
+ static function ($key, $value, $isHit) use ($defaultLifetime) {
+ $item = new CacheItem();
+ $item->key = $key;
+ $item->defaultLifetime = $defaultLifetime;
+ $item->isTaggable = true;
+ // If structure does not match what we expect return item as is (no value and not a hit)
+ if (!\is_array($value) || !\array_key_exists('value', $value)) {
+ return $item;
+ }
+ $item->isHit = $isHit;
+ // Extract value, tags and meta data from the cache value
+ $item->value = $value['value'];
+ $item->metadata[CacheItem::METADATA_TAGS] = $value['tags'] ?? [];
+ if (isset($value['meta'])) {
+ // For compactness these values are packed, & expiry is offset to reduce size
+ $v = unpack('Ve/Nc', $value['meta']);
+ $item->metadata[CacheItem::METADATA_EXPIRY] = $v['e'] + CacheItem::METADATA_EXPIRY_OFFSET;
+ $item->metadata[CacheItem::METADATA_CTIME] = $v['c'];
+ }
+
+ return $item;
+ },
+ null,
+ CacheItem::class
+ );
+ $getId = \Closure::fromCallable([$this, 'getId']);
+ $tagPrefix = self::TAGS_PREFIX;
+ $this->mergeByLifetime = \Closure::bind(
+ static function ($deferred, &$expiredIds) use ($getId, $tagPrefix) {
+ $byLifetime = [];
+ $now = microtime(true);
+ $expiredIds = [];
+
+ foreach ($deferred as $key => $item) {
+ $key = (string) $key;
+ if (null === $item->expiry) {
+ $ttl = 0 < $item->defaultLifetime ? $item->defaultLifetime : 0;
+ } elseif (0 >= $ttl = (int) (0.1 + $item->expiry - $now)) {
+ $expiredIds[] = $getId($key);
+ continue;
+ }
+ // Store Value and Tags on the cache value
+ if (isset(($metadata = $item->newMetadata)[CacheItem::METADATA_TAGS])) {
+ $value = ['value' => $item->value, 'tags' => $metadata[CacheItem::METADATA_TAGS]];
+ unset($metadata[CacheItem::METADATA_TAGS]);
+ } else {
+ $value = ['value' => $item->value, 'tags' => []];
+ }
+
+ if ($metadata) {
+ // For compactness, expiry and creation duration are packed, using magic numbers as separators
+ $value['meta'] = pack('VN', (int) (0.1 + $metadata[self::METADATA_EXPIRY] - self::METADATA_EXPIRY_OFFSET), $metadata[self::METADATA_CTIME]);
+ }
+
+ // Extract tag changes, these should be removed from values in doSave()
+ $value['tag-operations'] = ['add' => [], 'remove' => []];
+ $oldTags = $item->metadata[CacheItem::METADATA_TAGS] ?? [];
+ foreach (array_diff($value['tags'], $oldTags) as $addedTag) {
+ $value['tag-operations']['add'][] = $getId($tagPrefix.$addedTag);
+ }
+ foreach (array_diff($oldTags, $value['tags']) as $removedTag) {
+ $value['tag-operations']['remove'][] = $getId($tagPrefix.$removedTag);
+ }
+
+ $byLifetime[$ttl][$getId($key)] = $value;
+ }
+
+ return $byLifetime;
+ },
+ null,
+ CacheItem::class
+ );
+ }
+
+ /**
+ * Persists several cache items immediately.
+ *
+ * @param array $values The values to cache, indexed by their cache identifier
+ * @param int $lifetime The lifetime of the cached values, 0 for persisting until manual cleaning
+ * @param array[] $addTagData Hash where key is tag id, and array value is list of cache id's to add to tag
+ * @param array[] $removeTagData Hash where key is tag id, and array value is list of cache id's to remove to tag
+ *
+ * @return array The identifiers that failed to be cached or a boolean stating if caching succeeded or not
+ */
+ abstract protected function doSave(array $values, ?int $lifetime, array $addTagData = [], array $removeTagData = []): array;
+
+ /**
+ * Removes multiple items from the pool and their corresponding tags.
+ *
+ * @param array $ids An array of identifiers that should be removed from the pool
+ *
+ * @return bool True if the items were successfully removed, false otherwise
+ */
+ abstract protected function doDelete(array $ids);
+
+ /**
+ * Removes relations between tags and deleted items.
+ *
+ * @param array $tagData Array of tag => key identifiers that should be removed from the pool
+ */
+ abstract protected function doDeleteTagRelations(array $tagData): bool;
+
+ /**
+ * Invalidates cached items using tags.
+ *
+ * @param string[] $tagIds An array of tags to invalidate, key is tag and value is tag id
+ *
+ * @return bool True on success
+ */
+ abstract protected function doInvalidate(array $tagIds): bool;
+
+ /**
+ * Delete items and yields the tags they were bound to.
+ */
+ protected function doDeleteYieldTags(array $ids): iterable
+ {
+ foreach ($this->doFetch($ids) as $id => $value) {
+ yield $id => \is_array($value) && \is_array($value['tags'] ?? null) ? $value['tags'] : [];
+ }
+
+ $this->doDelete($ids);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function commit(): bool
+ {
+ $ok = true;
+ $byLifetime = $this->mergeByLifetime;
+ $byLifetime = $byLifetime($this->deferred, $expiredIds);
+ $retry = $this->deferred = [];
+
+ if ($expiredIds) {
+ // Tags are not cleaned up in this case, however that is done on invalidateTags().
+ $this->doDelete($expiredIds);
+ }
+ foreach ($byLifetime as $lifetime => $values) {
+ try {
+ $values = $this->extractTagData($values, $addTagData, $removeTagData);
+ $e = $this->doSave($values, $lifetime, $addTagData, $removeTagData);
+ } catch (\Exception $e) {
+ }
+ if (true === $e || [] === $e) {
+ continue;
+ }
+ if (\is_array($e) || 1 === \count($values)) {
+ foreach (\is_array($e) ? $e : array_keys($values) as $id) {
+ $ok = false;
+ $v = $values[$id];
+ $type = \is_object($v) ? \get_class($v) : \gettype($v);
+ $message = sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ CacheItem::log($this->logger, $message, ['key' => substr($id, \strlen($this->namespace)), 'exception' => $e instanceof \Exception ? $e : null]);
+ }
+ } else {
+ foreach ($values as $id => $v) {
+ $retry[$lifetime][] = $id;
+ }
+ }
+ }
+
+ // When bulk-save failed, retry each item individually
+ foreach ($retry as $lifetime => $ids) {
+ foreach ($ids as $id) {
+ try {
+ $v = $byLifetime[$lifetime][$id];
+ $values = $this->extractTagData([$id => $v], $addTagData, $removeTagData);
+ $e = $this->doSave($values, $lifetime, $addTagData, $removeTagData);
+ } catch (\Exception $e) {
+ }
+ if (true === $e || [] === $e) {
+ continue;
+ }
+ $ok = false;
+ $type = \is_object($v) ? \get_class($v) : \gettype($v);
+ $message = sprintf('Failed to save key "{key}" of type %s%s', $type, $e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ CacheItem::log($this->logger, $message, ['key' => substr($id, \strlen($this->namespace)), 'exception' => $e instanceof \Exception ? $e : null]);
+ }
+ }
+
+ return $ok;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function deleteItems(array $keys): bool
+ {
+ if (!$keys) {
+ return true;
+ }
+
+ $ok = true;
+ $ids = [];
+ $tagData = [];
+
+ foreach ($keys as $key) {
+ $ids[$key] = $this->getId($key);
+ unset($this->deferred[$key]);
+ }
+
+ try {
+ foreach ($this->doDeleteYieldTags(array_values($ids)) as $id => $tags) {
+ foreach ($tags as $tag) {
+ $tagData[$this->getId(self::TAGS_PREFIX.$tag)][] = $id;
+ }
+ }
+ } catch (\Exception $e) {
+ $ok = false;
+ }
+
+ try {
+ if ((!$tagData || $this->doDeleteTagRelations($tagData)) && $ok) {
+ return true;
+ }
+ } catch (\Exception $e) {
+ }
+
+ // When bulk-delete failed, retry each item individually
+ foreach ($ids as $key => $id) {
+ try {
+ $e = null;
+ if ($this->doDelete([$id])) {
+ continue;
+ }
+ } catch (\Exception $e) {
+ }
+ $message = 'Failed to delete key "{key}"'.($e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ CacheItem::log($this->logger, $message, ['key' => $key, 'exception' => $e]);
+ $ok = false;
+ }
+
+ return $ok;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function invalidateTags(array $tags)
+ {
+ if (empty($tags)) {
+ return false;
+ }
+
+ $tagIds = [];
+ foreach (array_unique($tags) as $tag) {
+ $tagIds[] = $this->getId(self::TAGS_PREFIX.$tag);
+ }
+
+ if ($this->doInvalidate($tagIds)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Extracts tags operation data from $values set in mergeByLifetime, and returns values without it.
+ */
+ private function extractTagData(array $values, ?array &$addTagData, ?array &$removeTagData): array
+ {
+ $addTagData = $removeTagData = [];
+ foreach ($values as $id => $value) {
+ foreach ($value['tag-operations']['add'] as $tag => $tagId) {
+ $addTagData[$tagId][] = $id;
+ }
+
+ foreach ($value['tag-operations']['remove'] as $tag => $tagId) {
+ $removeTagData[$tagId][] = $id;
+ }
+
+ unset($values[$id]['tag-operations']);
+ }
+
+ return $values;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/AdapterInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/AdapterInterface.php
new file mode 100644
index 0000000..fbc74ca
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/AdapterInterface.php
@@ -0,0 +1,49 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Psr\Cache\CacheItemPoolInterface;
+use Symfony\Component\Cache\CacheItem;
+
+// Help opcache.preload discover always-needed symbols
+class_exists(CacheItem::class);
+
+/**
+ * Interface for adapters managing instances of Symfony's CacheItem.
+ *
+ * @author Kévin Dunglas
+ */
+interface AdapterInterface extends CacheItemPoolInterface
+{
+ /**
+ * {@inheritdoc}
+ *
+ * @return CacheItem
+ */
+ public function getItem($key);
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return \Traversable|CacheItem[]
+ */
+ public function getItems(array $keys = []);
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param string $prefix
+ *
+ * @return bool
+ */
+ public function clear(/*string $prefix = ''*/);
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ApcuAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ApcuAdapter.php
new file mode 100644
index 0000000..7db3956
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ApcuAdapter.php
@@ -0,0 +1,27 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Symfony\Component\Cache\Traits\ApcuTrait;
+
+class ApcuAdapter extends AbstractAdapter
+{
+ use ApcuTrait;
+
+ /**
+ * @throws CacheException if APCu is not enabled
+ */
+ public function __construct(string $namespace = '', int $defaultLifetime = 0, string $version = null)
+ {
+ $this->init($namespace, $defaultLifetime, $version);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ArrayAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ArrayAdapter.php
new file mode 100644
index 0000000..d93dcbd
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ArrayAdapter.php
@@ -0,0 +1,171 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Psr\Cache\CacheItemInterface;
+use Psr\Log\LoggerAwareInterface;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\ArrayTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+/**
+ * @author Nicolas Grekas
+ */
+class ArrayAdapter implements AdapterInterface, CacheInterface, LoggerAwareInterface, ResettableInterface
+{
+ use ArrayTrait;
+
+ private $createCacheItem;
+
+ /**
+ * @param bool $storeSerialized Disabling serialization can lead to cache corruptions when storing mutable values but increases performance otherwise
+ */
+ public function __construct(int $defaultLifetime = 0, bool $storeSerialized = true)
+ {
+ $this->storeSerialized = $storeSerialized;
+ $this->createCacheItem = \Closure::bind(
+ static function ($key, $value, $isHit) use ($defaultLifetime) {
+ $item = new CacheItem();
+ $item->key = $key;
+ $item->value = $value;
+ $item->isHit = $isHit;
+ $item->defaultLifetime = $defaultLifetime;
+
+ return $item;
+ },
+ null,
+ CacheItem::class
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get(string $key, callable $callback, float $beta = null, array &$metadata = null)
+ {
+ $item = $this->getItem($key);
+ $metadata = $item->getMetadata();
+
+ // ArrayAdapter works in memory, we don't care about stampede protection
+ if (INF === $beta || !$item->isHit()) {
+ $save = true;
+ $this->save($item->set($callback($item, $save)));
+ }
+
+ return $item->get();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItem($key)
+ {
+ if (!$isHit = $this->hasItem($key)) {
+ $this->values[$key] = $value = null;
+ } else {
+ $value = $this->storeSerialized ? $this->unfreeze($key, $isHit) : $this->values[$key];
+ }
+ $f = $this->createCacheItem;
+
+ return $f($key, $value, $isHit);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItems(array $keys = [])
+ {
+ foreach ($keys as $key) {
+ if (!\is_string($key) || !isset($this->expiries[$key])) {
+ CacheItem::validateKey($key);
+ }
+ }
+
+ return $this->generateItems($keys, microtime(true), $this->createCacheItem);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItems(array $keys)
+ {
+ foreach ($keys as $key) {
+ $this->deleteItem($key);
+ }
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function save(CacheItemInterface $item)
+ {
+ if (!$item instanceof CacheItem) {
+ return false;
+ }
+ $item = (array) $item;
+ $key = $item["\0*\0key"];
+ $value = $item["\0*\0value"];
+ $expiry = $item["\0*\0expiry"];
+
+ if (null !== $expiry && $expiry <= microtime(true)) {
+ $this->deleteItem($key);
+
+ return true;
+ }
+ if ($this->storeSerialized && null === $value = $this->freeze($value, $key)) {
+ return false;
+ }
+ if (null === $expiry && 0 < $item["\0*\0defaultLifetime"]) {
+ $expiry = microtime(true) + $item["\0*\0defaultLifetime"];
+ }
+
+ $this->values[$key] = $value;
+ $this->expiries[$key] = null !== $expiry ? $expiry : PHP_INT_MAX;
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function saveDeferred(CacheItemInterface $item)
+ {
+ return $this->save($item);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function commit()
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function delete(string $key): bool
+ {
+ return $this->deleteItem($key);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ChainAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ChainAdapter.php
new file mode 100644
index 0000000..63e97a8
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ChainAdapter.php
@@ -0,0 +1,332 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Psr\Cache\CacheItemInterface;
+use Psr\Cache\CacheItemPoolInterface;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\ContractsTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+use Symfony\Contracts\Service\ResetInterface;
+
+/**
+ * Chains several adapters together.
+ *
+ * Cached items are fetched from the first adapter having them in its data store.
+ * They are saved and deleted in all adapters at once.
+ *
+ * @author Kévin Dunglas
+ */
+class ChainAdapter implements AdapterInterface, CacheInterface, PruneableInterface, ResettableInterface
+{
+ use ContractsTrait;
+
+ private $adapters = [];
+ private $adapterCount;
+ private $syncItem;
+
+ /**
+ * @param CacheItemPoolInterface[] $adapters The ordered list of adapters used to fetch cached items
+ * @param int $defaultLifetime The default lifetime of items propagated from lower adapters to upper ones
+ */
+ public function __construct(array $adapters, int $defaultLifetime = 0)
+ {
+ if (!$adapters) {
+ throw new InvalidArgumentException('At least one adapter must be specified.');
+ }
+
+ foreach ($adapters as $adapter) {
+ if (!$adapter instanceof CacheItemPoolInterface) {
+ throw new InvalidArgumentException(sprintf('The class "%s" does not implement the "%s" interface.', \get_class($adapter), CacheItemPoolInterface::class));
+ }
+
+ if ($adapter instanceof AdapterInterface) {
+ $this->adapters[] = $adapter;
+ } else {
+ $this->adapters[] = new ProxyAdapter($adapter);
+ }
+ }
+ $this->adapterCount = \count($this->adapters);
+
+ $this->syncItem = \Closure::bind(
+ static function ($sourceItem, $item, $sourceMetadata = null) use ($defaultLifetime) {
+ $sourceItem->isTaggable = false;
+ $sourceMetadata = $sourceMetadata ?? $sourceItem->metadata;
+ unset($sourceMetadata[CacheItem::METADATA_TAGS]);
+
+ $item->value = $sourceItem->value;
+ $item->expiry = $sourceMetadata[CacheItem::METADATA_EXPIRY] ?? $sourceItem->expiry;
+ $item->isHit = $sourceItem->isHit;
+ $item->metadata = $item->newMetadata = $sourceItem->metadata = $sourceMetadata;
+
+ if (0 < $sourceItem->defaultLifetime && $sourceItem->defaultLifetime < $defaultLifetime) {
+ $defaultLifetime = $sourceItem->defaultLifetime;
+ }
+ if (0 < $defaultLifetime && ($item->defaultLifetime <= 0 || $defaultLifetime < $item->defaultLifetime)) {
+ $item->defaultLifetime = $defaultLifetime;
+ }
+
+ return $item;
+ },
+ null,
+ CacheItem::class
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get(string $key, callable $callback, float $beta = null, array &$metadata = null)
+ {
+ $lastItem = null;
+ $i = 0;
+ $wrap = function (CacheItem $item = null) use ($key, $callback, $beta, &$wrap, &$i, &$lastItem, &$metadata) {
+ $adapter = $this->adapters[$i];
+ if (isset($this->adapters[++$i])) {
+ $callback = $wrap;
+ $beta = INF === $beta ? INF : 0;
+ }
+ if ($adapter instanceof CacheInterface) {
+ $value = $adapter->get($key, $callback, $beta, $metadata);
+ } else {
+ $value = $this->doGet($adapter, $key, $callback, $beta, $metadata);
+ }
+ if (null !== $item) {
+ ($this->syncItem)($lastItem = $lastItem ?? $item, $item, $metadata);
+ }
+
+ return $value;
+ };
+
+ return $wrap();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItem($key)
+ {
+ $syncItem = $this->syncItem;
+ $misses = [];
+
+ foreach ($this->adapters as $i => $adapter) {
+ $item = $adapter->getItem($key);
+
+ if ($item->isHit()) {
+ while (0 <= --$i) {
+ $this->adapters[$i]->save($syncItem($item, $misses[$i]));
+ }
+
+ return $item;
+ }
+
+ $misses[$i] = $item;
+ }
+
+ return $item;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItems(array $keys = [])
+ {
+ return $this->generateItems($this->adapters[0]->getItems($keys), 0);
+ }
+
+ private function generateItems(iterable $items, int $adapterIndex)
+ {
+ $missing = [];
+ $misses = [];
+ $nextAdapterIndex = $adapterIndex + 1;
+ $nextAdapter = isset($this->adapters[$nextAdapterIndex]) ? $this->adapters[$nextAdapterIndex] : null;
+
+ foreach ($items as $k => $item) {
+ if (!$nextAdapter || $item->isHit()) {
+ yield $k => $item;
+ } else {
+ $missing[] = $k;
+ $misses[$k] = $item;
+ }
+ }
+
+ if ($missing) {
+ $syncItem = $this->syncItem;
+ $adapter = $this->adapters[$adapterIndex];
+ $items = $this->generateItems($nextAdapter->getItems($missing), $nextAdapterIndex);
+
+ foreach ($items as $k => $item) {
+ if ($item->isHit()) {
+ $adapter->save($syncItem($item, $misses[$k]));
+ }
+
+ yield $k => $item;
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function hasItem($key)
+ {
+ foreach ($this->adapters as $adapter) {
+ if ($adapter->hasItem($key)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param string $prefix
+ *
+ * @return bool
+ */
+ public function clear(/*string $prefix = ''*/)
+ {
+ $prefix = 0 < \func_num_args() ? (string) func_get_arg(0) : '';
+ $cleared = true;
+ $i = $this->adapterCount;
+
+ while ($i--) {
+ if ($this->adapters[$i] instanceof AdapterInterface) {
+ $cleared = $this->adapters[$i]->clear($prefix) && $cleared;
+ } else {
+ $cleared = $this->adapters[$i]->clear() && $cleared;
+ }
+ }
+
+ return $cleared;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItem($key)
+ {
+ $deleted = true;
+ $i = $this->adapterCount;
+
+ while ($i--) {
+ $deleted = $this->adapters[$i]->deleteItem($key) && $deleted;
+ }
+
+ return $deleted;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItems(array $keys)
+ {
+ $deleted = true;
+ $i = $this->adapterCount;
+
+ while ($i--) {
+ $deleted = $this->adapters[$i]->deleteItems($keys) && $deleted;
+ }
+
+ return $deleted;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function save(CacheItemInterface $item)
+ {
+ $saved = true;
+ $i = $this->adapterCount;
+
+ while ($i--) {
+ $saved = $this->adapters[$i]->save($item) && $saved;
+ }
+
+ return $saved;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function saveDeferred(CacheItemInterface $item)
+ {
+ $saved = true;
+ $i = $this->adapterCount;
+
+ while ($i--) {
+ $saved = $this->adapters[$i]->saveDeferred($item) && $saved;
+ }
+
+ return $saved;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function commit()
+ {
+ $committed = true;
+ $i = $this->adapterCount;
+
+ while ($i--) {
+ $committed = $this->adapters[$i]->commit() && $committed;
+ }
+
+ return $committed;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function prune()
+ {
+ $pruned = true;
+
+ foreach ($this->adapters as $adapter) {
+ if ($adapter instanceof PruneableInterface) {
+ $pruned = $adapter->prune() && $pruned;
+ }
+ }
+
+ return $pruned;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function reset()
+ {
+ foreach ($this->adapters as $adapter) {
+ if ($adapter instanceof ResetInterface) {
+ $adapter->reset();
+ }
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/DoctrineAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/DoctrineAdapter.php
new file mode 100644
index 0000000..75ae4cb
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/DoctrineAdapter.php
@@ -0,0 +1,27 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Doctrine\Common\Cache\CacheProvider;
+use Symfony\Component\Cache\Traits\DoctrineTrait;
+
+class DoctrineAdapter extends AbstractAdapter
+{
+ use DoctrineTrait;
+
+ public function __construct(CacheProvider $provider, string $namespace = '', int $defaultLifetime = 0)
+ {
+ parent::__construct('', $defaultLifetime);
+ $this->provider = $provider;
+ $provider->setNamespace($namespace);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/FilesystemAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/FilesystemAdapter.php
new file mode 100644
index 0000000..7185dd4
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/FilesystemAdapter.php
@@ -0,0 +1,29 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Symfony\Component\Cache\Marshaller\DefaultMarshaller;
+use Symfony\Component\Cache\Marshaller\MarshallerInterface;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\Traits\FilesystemTrait;
+
+class FilesystemAdapter extends AbstractAdapter implements PruneableInterface
+{
+ use FilesystemTrait;
+
+ public function __construct(string $namespace = '', int $defaultLifetime = 0, string $directory = null, MarshallerInterface $marshaller = null)
+ {
+ $this->marshaller = $marshaller ?? new DefaultMarshaller();
+ parent::__construct('', $defaultLifetime);
+ $this->init($namespace, $directory);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/FilesystemTagAwareAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/FilesystemTagAwareAdapter.php
new file mode 100644
index 0000000..d9a1ad3
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/FilesystemTagAwareAdapter.php
@@ -0,0 +1,239 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Symfony\Component\Cache\Marshaller\MarshallerInterface;
+use Symfony\Component\Cache\Marshaller\TagAwareMarshaller;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\Traits\FilesystemTrait;
+
+/**
+ * Stores tag id <> cache id relationship as a symlink, and lookup on invalidation calls.
+ *
+ * @author Nicolas Grekas
+ * @author André Rømcke
+ */
+class FilesystemTagAwareAdapter extends AbstractTagAwareAdapter implements PruneableInterface
+{
+ use FilesystemTrait {
+ doClear as private doClearCache;
+ doSave as private doSaveCache;
+ }
+
+ /**
+ * Folder used for tag symlinks.
+ */
+ private const TAG_FOLDER = 'tags';
+
+ public function __construct(string $namespace = '', int $defaultLifetime = 0, string $directory = null, MarshallerInterface $marshaller = null)
+ {
+ $this->marshaller = new TagAwareMarshaller($marshaller);
+ parent::__construct('', $defaultLifetime);
+ $this->init($namespace, $directory);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doClear($namespace)
+ {
+ $ok = $this->doClearCache($namespace);
+
+ if ('' !== $namespace) {
+ return $ok;
+ }
+
+ set_error_handler(static function () {});
+ $chars = '+-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
+
+ try {
+ foreach ($this->scanHashDir($this->directory.self::TAG_FOLDER.\DIRECTORY_SEPARATOR) as $dir) {
+ if (rename($dir, $renamed = substr_replace($dir, bin2hex(random_bytes(4)), -8))) {
+ $dir = $renamed.\DIRECTORY_SEPARATOR;
+ } else {
+ $dir .= \DIRECTORY_SEPARATOR;
+ $renamed = null;
+ }
+
+ for ($i = 0; $i < 38; ++$i) {
+ if (!file_exists($dir.$chars[$i])) {
+ continue;
+ }
+ for ($j = 0; $j < 38; ++$j) {
+ if (!file_exists($d = $dir.$chars[$i].\DIRECTORY_SEPARATOR.$chars[$j])) {
+ continue;
+ }
+ foreach (scandir($d, SCANDIR_SORT_NONE) ?: [] as $link) {
+ if ('.' !== $link && '..' !== $link && (null !== $renamed || !realpath($d.\DIRECTORY_SEPARATOR.$link))) {
+ unlink($d.\DIRECTORY_SEPARATOR.$link);
+ }
+ }
+ null === $renamed ?: rmdir($d);
+ }
+ null === $renamed ?: rmdir($dir.$chars[$i]);
+ }
+ null === $renamed ?: rmdir($renamed);
+ }
+ } finally {
+ restore_error_handler();
+ }
+
+ return $ok;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave(array $values, ?int $lifetime, array $addTagData = [], array $removeTagData = []): array
+ {
+ $failed = $this->doSaveCache($values, $lifetime);
+
+ // Add Tags as symlinks
+ foreach ($addTagData as $tagId => $ids) {
+ $tagFolder = $this->getTagFolder($tagId);
+ foreach ($ids as $id) {
+ if ($failed && \in_array($id, $failed, true)) {
+ continue;
+ }
+
+ $file = $this->getFile($id);
+
+ if (!@symlink($file, $this->getFile($id, true, $tagFolder))) {
+ @unlink($file);
+ $failed[] = $id;
+ }
+ }
+ }
+
+ // Unlink removed Tags
+ foreach ($removeTagData as $tagId => $ids) {
+ $tagFolder = $this->getTagFolder($tagId);
+ foreach ($ids as $id) {
+ if ($failed && \in_array($id, $failed, true)) {
+ continue;
+ }
+
+ @unlink($this->getFile($id, false, $tagFolder));
+ }
+ }
+
+ return $failed;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDeleteYieldTags(array $ids): iterable
+ {
+ foreach ($ids as $id) {
+ $file = $this->getFile($id);
+ if (!file_exists($file) || !$h = @fopen($file, 'rb')) {
+ continue;
+ }
+
+ if ((\PHP_VERSION_ID >= 70300 || '\\' !== \DIRECTORY_SEPARATOR) && !@unlink($file)) {
+ fclose($h);
+ continue;
+ }
+
+ $meta = explode("\n", fread($h, 4096), 3)[2] ?? '';
+
+ // detect the compact format used in marshall() using magic numbers in the form 9D-..-..-..-..-00-..-..-..-5F
+ if (13 < \strlen($meta) && "\x9D" === $meta[0] && "\0" === $meta[5] && "\x5F" === $meta[9]) {
+ $meta[9] = "\0";
+ $tagLen = unpack('Nlen', $meta, 9)['len'];
+ $meta = substr($meta, 13, $tagLen);
+
+ if (0 < $tagLen -= \strlen($meta)) {
+ $meta .= fread($h, $tagLen);
+ }
+
+ try {
+ yield $id => '' === $meta ? [] : $this->marshaller->unmarshall($meta);
+ } catch (\Exception $e) {
+ yield $id => [];
+ }
+ }
+
+ fclose($h);
+
+ if (\PHP_VERSION_ID < 70300 && '\\' === \DIRECTORY_SEPARATOR) {
+ @unlink($file);
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDeleteTagRelations(array $tagData): bool
+ {
+ foreach ($tagData as $tagId => $idList) {
+ $tagFolder = $this->getTagFolder($tagId);
+ foreach ($idList as $id) {
+ @unlink($this->getFile($id, false, $tagFolder));
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doInvalidate(array $tagIds): bool
+ {
+ foreach ($tagIds as $tagId) {
+ if (!file_exists($tagFolder = $this->getTagFolder($tagId))) {
+ continue;
+ }
+
+ set_error_handler(static function () {});
+
+ try {
+ if (rename($tagFolder, $renamed = substr_replace($tagFolder, bin2hex(random_bytes(4)), -9))) {
+ $tagFolder = $renamed.\DIRECTORY_SEPARATOR;
+ } else {
+ $renamed = null;
+ }
+
+ foreach ($this->scanHashDir($tagFolder) as $itemLink) {
+ unlink(realpath($itemLink) ?: $itemLink);
+ unlink($itemLink);
+ }
+
+ if (null === $renamed) {
+ continue;
+ }
+
+ $chars = '+-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
+
+ for ($i = 0; $i < 38; ++$i) {
+ for ($j = 0; $j < 38; ++$j) {
+ rmdir($tagFolder.$chars[$i].\DIRECTORY_SEPARATOR.$chars[$j]);
+ }
+ rmdir($tagFolder.$chars[$i]);
+ }
+ rmdir($renamed);
+ } finally {
+ restore_error_handler();
+ }
+ }
+
+ return true;
+ }
+
+ private function getTagFolder(string $tagId): string
+ {
+ return $this->getFile($tagId, false, $this->directory.self::TAG_FOLDER.\DIRECTORY_SEPARATOR).\DIRECTORY_SEPARATOR;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/MemcachedAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/MemcachedAdapter.php
new file mode 100644
index 0000000..b678bb5
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/MemcachedAdapter.php
@@ -0,0 +1,37 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Symfony\Component\Cache\Marshaller\MarshallerInterface;
+use Symfony\Component\Cache\Traits\MemcachedTrait;
+
+class MemcachedAdapter extends AbstractAdapter
+{
+ use MemcachedTrait;
+
+ protected $maxIdLength = 250;
+
+ /**
+ * Using a MemcachedAdapter with a TagAwareAdapter for storing tags is discouraged.
+ * Using a RedisAdapter is recommended instead. If you cannot do otherwise, be aware that:
+ * - the Memcached::OPT_BINARY_PROTOCOL must be enabled
+ * (that's the default when using MemcachedAdapter::createConnection());
+ * - tags eviction by Memcached's LRU algorithm will break by-tags invalidation;
+ * your Memcached memory should be large enough to never trigger LRU.
+ *
+ * Using a MemcachedAdapter as a pure items store is fine.
+ */
+ public function __construct(\Memcached $client, string $namespace = '', int $defaultLifetime = 0, MarshallerInterface $marshaller = null)
+ {
+ $this->init($client, $namespace, $defaultLifetime, $marshaller);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/NullAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/NullAdapter.php
new file mode 100644
index 0000000..a2fdd36
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/NullAdapter.php
@@ -0,0 +1,156 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Psr\Cache\CacheItemInterface;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Contracts\Cache\CacheInterface;
+
+/**
+ * @author Titouan Galopin
+ */
+class NullAdapter implements AdapterInterface, CacheInterface
+{
+ private $createCacheItem;
+
+ public function __construct()
+ {
+ $this->createCacheItem = \Closure::bind(
+ function ($key) {
+ $item = new CacheItem();
+ $item->key = $key;
+ $item->isHit = false;
+
+ return $item;
+ },
+ $this,
+ CacheItem::class
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get(string $key, callable $callback, float $beta = null, array &$metadata = null)
+ {
+ $save = true;
+
+ return $callback(($this->createCacheItem)($key), $save);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItem($key)
+ {
+ $f = $this->createCacheItem;
+
+ return $f($key);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItems(array $keys = [])
+ {
+ return $this->generateItems($keys);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function hasItem($key)
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param string $prefix
+ *
+ * @return bool
+ */
+ public function clear(/*string $prefix = ''*/)
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItem($key)
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItems(array $keys)
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function save(CacheItemInterface $item)
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function saveDeferred(CacheItemInterface $item)
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function commit()
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function delete(string $key): bool
+ {
+ return $this->deleteItem($key);
+ }
+
+ private function generateItems(array $keys)
+ {
+ $f = $this->createCacheItem;
+
+ foreach ($keys as $key) {
+ yield $key => $f($key);
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/PdoAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/PdoAdapter.php
new file mode 100644
index 0000000..d118736
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/PdoAdapter.php
@@ -0,0 +1,54 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Doctrine\DBAL\Connection;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\Marshaller\MarshallerInterface;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\Traits\PdoTrait;
+
+class PdoAdapter extends AbstractAdapter implements PruneableInterface
+{
+ use PdoTrait;
+
+ protected $maxIdLength = 255;
+
+ /**
+ * You can either pass an existing database connection as PDO instance or
+ * a Doctrine DBAL Connection or a DSN string that will be used to
+ * lazy-connect to the database when the cache is actually used.
+ *
+ * When a Doctrine DBAL Connection is passed, the cache table is created
+ * automatically when possible. Otherwise, use the createTable() method.
+ *
+ * List of available options:
+ * * db_table: The name of the table [default: cache_items]
+ * * db_id_col: The column where to store the cache id [default: item_id]
+ * * db_data_col: The column where to store the cache data [default: item_data]
+ * * db_lifetime_col: The column where to store the lifetime [default: item_lifetime]
+ * * db_time_col: The column where to store the timestamp [default: item_time]
+ * * db_username: The username when lazy-connect [default: '']
+ * * db_password: The password when lazy-connect [default: '']
+ * * db_connection_options: An array of driver-specific connection options [default: []]
+ *
+ * @param \PDO|Connection|string $connOrDsn a \PDO or Connection instance or DSN string or null
+ *
+ * @throws InvalidArgumentException When first argument is not PDO nor Connection nor string
+ * @throws InvalidArgumentException When PDO error mode is not PDO::ERRMODE_EXCEPTION
+ * @throws InvalidArgumentException When namespace contains invalid characters
+ */
+ public function __construct($connOrDsn, string $namespace = '', int $defaultLifetime = 0, array $options = [], MarshallerInterface $marshaller = null)
+ {
+ $this->init($connOrDsn, $namespace, $defaultLifetime, $options, $marshaller);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/PhpArrayAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/PhpArrayAdapter.php
new file mode 100644
index 0000000..b4f13d1
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/PhpArrayAdapter.php
@@ -0,0 +1,332 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Psr\Cache\CacheItemInterface;
+use Psr\Cache\CacheItemPoolInterface;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\ContractsTrait;
+use Symfony\Component\Cache\Traits\PhpArrayTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+/**
+ * Caches items at warm up time using a PHP array that is stored in shared memory by OPCache since PHP 7.0.
+ * Warmed up items are read-only and run-time discovered items are cached using a fallback adapter.
+ *
+ * @author Titouan Galopin
+ * @author Nicolas Grekas
+ */
+class PhpArrayAdapter implements AdapterInterface, CacheInterface, PruneableInterface, ResettableInterface
+{
+ use PhpArrayTrait;
+ use ContractsTrait;
+
+ private $createCacheItem;
+
+ /**
+ * @param string $file The PHP file were values are cached
+ * @param AdapterInterface $fallbackPool A pool to fallback on when an item is not hit
+ */
+ public function __construct(string $file, AdapterInterface $fallbackPool)
+ {
+ $this->file = $file;
+ $this->pool = $fallbackPool;
+ $this->createCacheItem = \Closure::bind(
+ static function ($key, $value, $isHit) {
+ $item = new CacheItem();
+ $item->key = $key;
+ $item->value = $value;
+ $item->isHit = $isHit;
+
+ return $item;
+ },
+ null,
+ CacheItem::class
+ );
+ }
+
+ /**
+ * This adapter takes advantage of how PHP stores arrays in its latest versions.
+ *
+ * @param string $file The PHP file were values are cached
+ * @param CacheItemPoolInterface $fallbackPool A pool to fallback on when an item is not hit
+ *
+ * @return CacheItemPoolInterface
+ */
+ public static function create($file, CacheItemPoolInterface $fallbackPool)
+ {
+ if (!$fallbackPool instanceof AdapterInterface) {
+ $fallbackPool = new ProxyAdapter($fallbackPool);
+ }
+
+ return new static($file, $fallbackPool);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get(string $key, callable $callback, float $beta = null, array &$metadata = null)
+ {
+ if (null === $this->values) {
+ $this->initialize();
+ }
+ if (!isset($this->keys[$key])) {
+ get_from_pool:
+ if ($this->pool instanceof CacheInterface) {
+ return $this->pool->get($key, $callback, $beta, $metadata);
+ }
+
+ return $this->doGet($this->pool, $key, $callback, $beta, $metadata);
+ }
+ $value = $this->values[$this->keys[$key]];
+
+ if ('N;' === $value) {
+ return null;
+ }
+ try {
+ if ($value instanceof \Closure) {
+ return $value();
+ }
+ } catch (\Throwable $e) {
+ unset($this->keys[$key]);
+ goto get_from_pool;
+ }
+
+ return $value;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItem($key)
+ {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+ if (!isset($this->keys[$key])) {
+ return $this->pool->getItem($key);
+ }
+
+ $value = $this->values[$this->keys[$key]];
+ $isHit = true;
+
+ if ('N;' === $value) {
+ $value = null;
+ } elseif ($value instanceof \Closure) {
+ try {
+ $value = $value();
+ } catch (\Throwable $e) {
+ $value = null;
+ $isHit = false;
+ }
+ }
+
+ $f = $this->createCacheItem;
+
+ return $f($key, $value, $isHit);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItems(array $keys = [])
+ {
+ foreach ($keys as $key) {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ return $this->generateItems($keys);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function hasItem($key)
+ {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ return isset($this->keys[$key]) || $this->pool->hasItem($key);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItem($key)
+ {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ return !isset($this->keys[$key]) && $this->pool->deleteItem($key);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItems(array $keys)
+ {
+ $deleted = true;
+ $fallbackKeys = [];
+
+ foreach ($keys as $key) {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+
+ if (isset($this->keys[$key])) {
+ $deleted = false;
+ } else {
+ $fallbackKeys[] = $key;
+ }
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ if ($fallbackKeys) {
+ $deleted = $this->pool->deleteItems($fallbackKeys) && $deleted;
+ }
+
+ return $deleted;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function save(CacheItemInterface $item)
+ {
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ return !isset($this->keys[$item->getKey()]) && $this->pool->save($item);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function saveDeferred(CacheItemInterface $item)
+ {
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ return !isset($this->keys[$item->getKey()]) && $this->pool->saveDeferred($item);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function commit()
+ {
+ return $this->pool->commit();
+ }
+
+ private function generateItems(array $keys): \Generator
+ {
+ $f = $this->createCacheItem;
+ $fallbackKeys = [];
+
+ foreach ($keys as $key) {
+ if (isset($this->keys[$key])) {
+ $value = $this->values[$this->keys[$key]];
+
+ if ('N;' === $value) {
+ yield $key => $f($key, null, true);
+ } elseif ($value instanceof \Closure) {
+ try {
+ yield $key => $f($key, $value(), true);
+ } catch (\Throwable $e) {
+ yield $key => $f($key, null, false);
+ }
+ } else {
+ yield $key => $f($key, $value, true);
+ }
+ } else {
+ $fallbackKeys[] = $key;
+ }
+ }
+
+ if ($fallbackKeys) {
+ yield from $this->pool->getItems($fallbackKeys);
+ }
+ }
+
+ /**
+ * @throws \ReflectionException When $class is not found and is required
+ *
+ * @internal to be removed in Symfony 5.0
+ */
+ public static function throwOnRequiredClass($class)
+ {
+ $e = new \ReflectionException("Class $class does not exist");
+ $trace = debug_backtrace();
+ $autoloadFrame = [
+ 'function' => 'spl_autoload_call',
+ 'args' => [$class],
+ ];
+ $i = 1 + array_search($autoloadFrame, $trace, true);
+
+ if (isset($trace[$i]['function']) && !isset($trace[$i]['class'])) {
+ switch ($trace[$i]['function']) {
+ case 'get_class_methods':
+ case 'get_class_vars':
+ case 'get_parent_class':
+ case 'is_a':
+ case 'is_subclass_of':
+ case 'class_exists':
+ case 'class_implements':
+ case 'class_parents':
+ case 'trait_exists':
+ case 'defined':
+ case 'interface_exists':
+ case 'method_exists':
+ case 'property_exists':
+ case 'is_callable':
+ return;
+ }
+ }
+
+ throw $e;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/PhpFilesAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/PhpFilesAdapter.php
new file mode 100644
index 0000000..10938a0
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/PhpFilesAdapter.php
@@ -0,0 +1,38 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Symfony\Component\Cache\Exception\CacheException;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\Traits\PhpFilesTrait;
+
+class PhpFilesAdapter extends AbstractAdapter implements PruneableInterface
+{
+ use PhpFilesTrait;
+
+ /**
+ * @param $appendOnly Set to `true` to gain extra performance when the items stored in this pool never expire.
+ * Doing so is encouraged because it fits perfectly OPcache's memory model.
+ *
+ * @throws CacheException if OPcache is not enabled
+ */
+ public function __construct(string $namespace = '', int $defaultLifetime = 0, string $directory = null, bool $appendOnly = false)
+ {
+ $this->appendOnly = $appendOnly;
+ self::$startTime = self::$startTime ?? $_SERVER['REQUEST_TIME'] ?? time();
+ parent::__construct('', $defaultLifetime);
+ $this->init($namespace, $directory);
+ $this->includeHandler = static function ($type, $msg, $file, $line) {
+ throw new \ErrorException($msg, 0, $type, $file, $line);
+ };
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ProxyAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ProxyAdapter.php
new file mode 100644
index 0000000..bccafb3
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/ProxyAdapter.php
@@ -0,0 +1,269 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Psr\Cache\CacheItemInterface;
+use Psr\Cache\CacheItemPoolInterface;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\ContractsTrait;
+use Symfony\Component\Cache\Traits\ProxyTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+/**
+ * @author Nicolas Grekas
+ */
+class ProxyAdapter implements AdapterInterface, CacheInterface, PruneableInterface, ResettableInterface
+{
+ use ProxyTrait;
+ use ContractsTrait;
+
+ private $namespace;
+ private $namespaceLen;
+ private $createCacheItem;
+ private $setInnerItem;
+ private $poolHash;
+
+ public function __construct(CacheItemPoolInterface $pool, string $namespace = '', int $defaultLifetime = 0)
+ {
+ $this->pool = $pool;
+ $this->poolHash = $poolHash = spl_object_hash($pool);
+ $this->namespace = '' === $namespace ? '' : CacheItem::validateKey($namespace);
+ $this->namespaceLen = \strlen($namespace);
+ $this->createCacheItem = \Closure::bind(
+ static function ($key, $innerItem) use ($defaultLifetime, $poolHash) {
+ $item = new CacheItem();
+ $item->key = $key;
+
+ if (null === $innerItem) {
+ return $item;
+ }
+
+ $item->value = $v = $innerItem->get();
+ $item->isHit = $innerItem->isHit();
+ $item->innerItem = $innerItem;
+ $item->defaultLifetime = $defaultLifetime;
+ $item->poolHash = $poolHash;
+
+ // Detect wrapped values that encode for their expiry and creation duration
+ // For compactness, these values are packed in the key of an array using
+ // magic numbers in the form 9D-..-..-..-..-00-..-..-..-5F
+ if (\is_array($v) && 1 === \count($v) && 10 === \strlen($k = key($v)) && "\x9D" === $k[0] && "\0" === $k[5] && "\x5F" === $k[9]) {
+ $item->value = $v[$k];
+ $v = unpack('Ve/Nc', substr($k, 1, -1));
+ $item->metadata[CacheItem::METADATA_EXPIRY] = $v['e'] + CacheItem::METADATA_EXPIRY_OFFSET;
+ $item->metadata[CacheItem::METADATA_CTIME] = $v['c'];
+ } elseif ($innerItem instanceof CacheItem) {
+ $item->metadata = $innerItem->metadata;
+ }
+ $innerItem->set(null);
+
+ return $item;
+ },
+ null,
+ CacheItem::class
+ );
+ $this->setInnerItem = \Closure::bind(
+ /**
+ * @param array $item A CacheItem cast to (array); accessing protected properties requires adding the "\0*\0" PHP prefix
+ */
+ static function (CacheItemInterface $innerItem, array $item) {
+ // Tags are stored separately, no need to account for them when considering this item's newly set metadata
+ if (isset(($metadata = $item["\0*\0newMetadata"])[CacheItem::METADATA_TAGS])) {
+ unset($metadata[CacheItem::METADATA_TAGS]);
+ }
+ if ($metadata) {
+ // For compactness, expiry and creation duration are packed in the key of an array, using magic numbers as separators
+ $item["\0*\0value"] = ["\x9D".pack('VN', (int) (0.1 + $metadata[self::METADATA_EXPIRY] - self::METADATA_EXPIRY_OFFSET), $metadata[self::METADATA_CTIME])."\x5F" => $item["\0*\0value"]];
+ }
+ $innerItem->set($item["\0*\0value"]);
+ $innerItem->expiresAt(null !== $item["\0*\0expiry"] ? \DateTime::createFromFormat('U.u', sprintf('%.6f', $item["\0*\0expiry"])) : null);
+ },
+ null,
+ CacheItem::class
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get(string $key, callable $callback, float $beta = null, array &$metadata = null)
+ {
+ if (!$this->pool instanceof CacheInterface) {
+ return $this->doGet($this, $key, $callback, $beta, $metadata);
+ }
+
+ return $this->pool->get($this->getId($key), function ($innerItem, bool &$save) use ($key, $callback) {
+ $item = ($this->createCacheItem)($key, $innerItem);
+ $item->set($value = $callback($item, $save));
+ ($this->setInnerItem)($innerItem, (array) $item);
+
+ return $value;
+ }, $beta, $metadata);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItem($key)
+ {
+ $f = $this->createCacheItem;
+ $item = $this->pool->getItem($this->getId($key));
+
+ return $f($key, $item);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItems(array $keys = [])
+ {
+ if ($this->namespaceLen) {
+ foreach ($keys as $i => $key) {
+ $keys[$i] = $this->getId($key);
+ }
+ }
+
+ return $this->generateItems($this->pool->getItems($keys));
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function hasItem($key)
+ {
+ return $this->pool->hasItem($this->getId($key));
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param string $prefix
+ *
+ * @return bool
+ */
+ public function clear(/*string $prefix = ''*/)
+ {
+ $prefix = 0 < \func_num_args() ? (string) func_get_arg(0) : '';
+
+ if ($this->pool instanceof AdapterInterface) {
+ return $this->pool->clear($this->namespace.$prefix);
+ }
+
+ return $this->pool->clear();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItem($key)
+ {
+ return $this->pool->deleteItem($this->getId($key));
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItems(array $keys)
+ {
+ if ($this->namespaceLen) {
+ foreach ($keys as $i => $key) {
+ $keys[$i] = $this->getId($key);
+ }
+ }
+
+ return $this->pool->deleteItems($keys);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function save(CacheItemInterface $item)
+ {
+ return $this->doSave($item, __FUNCTION__);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function saveDeferred(CacheItemInterface $item)
+ {
+ return $this->doSave($item, __FUNCTION__);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function commit()
+ {
+ return $this->pool->commit();
+ }
+
+ private function doSave(CacheItemInterface $item, string $method)
+ {
+ if (!$item instanceof CacheItem) {
+ return false;
+ }
+ $item = (array) $item;
+ if (null === $item["\0*\0expiry"] && 0 < $item["\0*\0defaultLifetime"]) {
+ $item["\0*\0expiry"] = microtime(true) + $item["\0*\0defaultLifetime"];
+ }
+
+ if ($item["\0*\0poolHash"] === $this->poolHash && $item["\0*\0innerItem"]) {
+ $innerItem = $item["\0*\0innerItem"];
+ } elseif ($this->pool instanceof AdapterInterface) {
+ // this is an optimization specific for AdapterInterface implementations
+ // so we can save a round-trip to the backend by just creating a new item
+ $f = $this->createCacheItem;
+ $innerItem = $f($this->namespace.$item["\0*\0key"], null);
+ } else {
+ $innerItem = $this->pool->getItem($this->namespace.$item["\0*\0key"]);
+ }
+
+ ($this->setInnerItem)($innerItem, $item);
+
+ return $this->pool->$method($innerItem);
+ }
+
+ private function generateItems(iterable $items)
+ {
+ $f = $this->createCacheItem;
+
+ foreach ($items as $key => $item) {
+ if ($this->namespaceLen) {
+ $key = substr($key, $this->namespaceLen);
+ }
+
+ yield $key => $f($key, $item);
+ }
+ }
+
+ private function getId($key): string
+ {
+ CacheItem::validateKey($key);
+
+ return $this->namespace.$key;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/Psr16Adapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/Psr16Adapter.php
new file mode 100644
index 0000000..bb38871
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/Psr16Adapter.php
@@ -0,0 +1,86 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Psr\SimpleCache\CacheInterface;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\ProxyTrait;
+
+/**
+ * Turns a PSR-16 cache into a PSR-6 one.
+ *
+ * @author Nicolas Grekas
+ */
+class Psr16Adapter extends AbstractAdapter implements PruneableInterface, ResettableInterface
+{
+ /**
+ * @internal
+ */
+ protected const NS_SEPARATOR = '_';
+
+ use ProxyTrait;
+
+ private $miss;
+
+ public function __construct(CacheInterface $pool, string $namespace = '', int $defaultLifetime = 0)
+ {
+ parent::__construct($namespace, $defaultLifetime);
+
+ $this->pool = $pool;
+ $this->miss = new \stdClass();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch(array $ids)
+ {
+ foreach ($this->pool->getMultiple($ids, $this->miss) as $key => $value) {
+ if ($this->miss !== $value) {
+ yield $key => $value;
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doHave($id)
+ {
+ return $this->pool->has($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doClear($namespace)
+ {
+ return $this->pool->clear();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete(array $ids)
+ {
+ return $this->pool->deleteMultiple($ids);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave(array $values, $lifetime)
+ {
+ return $this->pool->setMultiple($values, 0 === $lifetime ? null : $lifetime);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/RedisAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/RedisAdapter.php
new file mode 100644
index 0000000..5c49f7a
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/RedisAdapter.php
@@ -0,0 +1,30 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Symfony\Component\Cache\Marshaller\MarshallerInterface;
+use Symfony\Component\Cache\Traits\RedisTrait;
+
+class RedisAdapter extends AbstractAdapter
+{
+ use RedisTrait;
+
+ /**
+ * @param \Redis|\RedisArray|\RedisCluster|\Predis\ClientInterface $redisClient The redis client
+ * @param string $namespace The default namespace
+ * @param int $defaultLifetime The default lifetime
+ */
+ public function __construct($redisClient, string $namespace = '', int $defaultLifetime = 0, MarshallerInterface $marshaller = null)
+ {
+ $this->init($redisClient, $namespace, $defaultLifetime, $marshaller);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/RedisTagAwareAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/RedisTagAwareAdapter.php
new file mode 100644
index 0000000..f936afd
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/RedisTagAwareAdapter.php
@@ -0,0 +1,292 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Predis\Connection\Aggregate\ClusterInterface;
+use Predis\Connection\Aggregate\PredisCluster;
+use Predis\Response\Status;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\Marshaller\DeflateMarshaller;
+use Symfony\Component\Cache\Marshaller\MarshallerInterface;
+use Symfony\Component\Cache\Marshaller\TagAwareMarshaller;
+use Symfony\Component\Cache\Traits\RedisTrait;
+
+/**
+ * Stores tag id <> cache id relationship as a Redis Set, lookup on invalidation using RENAME+SMEMBERS.
+ *
+ * Set (tag relation info) is stored without expiry (non-volatile), while cache always gets an expiry (volatile) even
+ * if not set by caller. Thus if you configure redis with the right eviction policy you can be safe this tag <> cache
+ * relationship survives eviction (cache cleanup when Redis runs out of memory).
+ *
+ * Requirements:
+ * - Client: PHP Redis or Predis
+ * Note: Due to lack of RENAME support it is NOT recommended to use Cluster on Predis, instead use phpredis.
+ * - Server: Redis 2.8+
+ * Configured with any `volatile-*` eviction policy, OR `noeviction` if it will NEVER fill up memory
+ *
+ * Design limitations:
+ * - Max 4 billion cache keys per cache tag as limited by Redis Set datatype.
+ * E.g. If you use a "all" items tag for expiry instead of clear(), that limits you to 4 billion cache items also.
+ *
+ * @see https://redis.io/topics/lru-cache#eviction-policies Documentation for Redis eviction policies.
+ * @see https://redis.io/topics/data-types#sets Documentation for Redis Set datatype.
+ *
+ * @author Nicolas Grekas
+ * @author André Rømcke
+ */
+class RedisTagAwareAdapter extends AbstractTagAwareAdapter
+{
+ use RedisTrait;
+
+ /**
+ * Limits for how many keys are deleted in batch.
+ */
+ private const BULK_DELETE_LIMIT = 10000;
+
+ /**
+ * On cache items without a lifetime set, we set it to 100 days. This is to make sure cache items are
+ * preferred to be evicted over tag Sets, if eviction policy is configured according to requirements.
+ */
+ private const DEFAULT_CACHE_TTL = 8640000;
+
+ /**
+ * @var string|null detected eviction policy used on Redis server
+ */
+ private $redisEvictionPolicy;
+
+ /**
+ * @param \Redis|\RedisArray|\RedisCluster|\Predis\ClientInterface $redisClient The redis client
+ * @param string $namespace The default namespace
+ * @param int $defaultLifetime The default lifetime
+ */
+ public function __construct($redisClient, string $namespace = '', int $defaultLifetime = 0, MarshallerInterface $marshaller = null)
+ {
+ if ($redisClient instanceof \Predis\ClientInterface && $redisClient->getConnection() instanceof ClusterInterface && !$redisClient->getConnection() instanceof PredisCluster) {
+ throw new InvalidArgumentException(sprintf('Unsupported Predis cluster connection: only "%s" is, "%s" given.', PredisCluster::class, \get_class($redisClient->getConnection())));
+ }
+
+ if (\defined('Redis::OPT_COMPRESSION') && ($redisClient instanceof \Redis || $redisClient instanceof \RedisArray || $redisClient instanceof \RedisCluster)) {
+ $compression = $redisClient->getOption(\Redis::OPT_COMPRESSION);
+
+ foreach (\is_array($compression) ? $compression : [$compression] as $c) {
+ if (\Redis::COMPRESSION_NONE !== $c) {
+ throw new InvalidArgumentException(sprintf('phpredis compression must be disabled when using "%s", use "%s" instead.', static::class, DeflateMarshaller::class));
+ }
+ }
+ }
+
+ $this->init($redisClient, $namespace, $defaultLifetime, new TagAwareMarshaller($marshaller));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave(array $values, ?int $lifetime, array $addTagData = [], array $delTagData = []): array
+ {
+ $eviction = $this->getRedisEvictionPolicy();
+ if ('noeviction' !== $eviction && 0 !== strpos($eviction, 'volatile-')) {
+ CacheItem::log($this->logger, sprintf('Redis maxmemory-policy setting "%s" is *not* supported by RedisTagAwareAdapter, use "noeviction" or "volatile-*" eviction policies', $eviction));
+
+ return false;
+ }
+
+ // serialize values
+ if (!$serialized = $this->marshaller->marshall($values, $failed)) {
+ return $failed;
+ }
+
+ // While pipeline isn't supported on RedisCluster, other setups will at least benefit from doing this in one op
+ $results = $this->pipeline(static function () use ($serialized, $lifetime, $addTagData, $delTagData, $failed) {
+ // Store cache items, force a ttl if none is set, as there is no MSETEX we need to set each one
+ foreach ($serialized as $id => $value) {
+ yield 'setEx' => [
+ $id,
+ 0 >= $lifetime ? self::DEFAULT_CACHE_TTL : $lifetime,
+ $value,
+ ];
+ }
+
+ // Add and Remove Tags
+ foreach ($addTagData as $tagId => $ids) {
+ if (!$failed || $ids = array_diff($ids, $failed)) {
+ yield 'sAdd' => array_merge([$tagId], $ids);
+ }
+ }
+
+ foreach ($delTagData as $tagId => $ids) {
+ if (!$failed || $ids = array_diff($ids, $failed)) {
+ yield 'sRem' => array_merge([$tagId], $ids);
+ }
+ }
+ });
+
+ foreach ($results as $id => $result) {
+ // Skip results of SADD/SREM operations, they'll be 1 or 0 depending on if set value already existed or not
+ if (is_numeric($result)) {
+ continue;
+ }
+ // setEx results
+ if (true !== $result && (!$result instanceof Status || Status::get('OK') !== $result)) {
+ $failed[] = $id;
+ }
+ }
+
+ return $failed;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDeleteYieldTags(array $ids): iterable
+ {
+ $lua = <<<'EOLUA'
+ local v = redis.call('GET', KEYS[1])
+ redis.call('DEL', KEYS[1])
+
+ if not v or v:len() <= 13 or v:byte(1) ~= 0x9D or v:byte(6) ~= 0 or v:byte(10) ~= 0x5F then
+ return ''
+ end
+
+ return v:sub(14, 13 + v:byte(13) + v:byte(12) * 256 + v:byte(11) * 65536)
+EOLUA;
+
+ if ($this->redis instanceof \Predis\ClientInterface) {
+ $evalArgs = [$lua, 1, &$id];
+ } else {
+ $evalArgs = [$lua, [&$id], 1];
+ }
+
+ $results = $this->pipeline(function () use ($ids, &$id, $evalArgs) {
+ foreach ($ids as $id) {
+ yield 'eval' => $evalArgs;
+ }
+ });
+
+ foreach ($results as $id => $result) {
+ try {
+ yield $id => !\is_string($result) || '' === $result ? [] : $this->marshaller->unmarshall($result);
+ } catch (\Exception $e) {
+ yield $id => [];
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDeleteTagRelations(array $tagData): bool
+ {
+ $this->pipeline(static function () use ($tagData) {
+ foreach ($tagData as $tagId => $idList) {
+ array_unshift($idList, $tagId);
+ yield 'sRem' => $idList;
+ }
+ })->rewind();
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doInvalidate(array $tagIds): bool
+ {
+ if (!$this->redis instanceof \Predis\ClientInterface || !$this->redis->getConnection() instanceof PredisCluster) {
+ $movedTagSetIds = $this->renameKeys($this->redis, $tagIds);
+ } else {
+ $clusterConnection = $this->redis->getConnection();
+ $tagIdsByConnection = new \SplObjectStorage();
+ $movedTagSetIds = [];
+
+ foreach ($tagIds as $id) {
+ $connection = $clusterConnection->getConnectionByKey($id);
+ $slot = $tagIdsByConnection[$connection] ?? $tagIdsByConnection[$connection] = new \ArrayObject();
+ $slot[] = $id;
+ }
+
+ foreach ($tagIdsByConnection as $connection) {
+ $slot = $tagIdsByConnection[$connection];
+ $movedTagSetIds = array_merge($movedTagSetIds, $this->renameKeys(new $this->redis($connection, $this->redis->getOptions()), $slot->getArrayCopy()));
+ }
+ }
+
+ // No Sets found
+ if (!$movedTagSetIds) {
+ return false;
+ }
+
+ // Now safely take the time to read the keys in each set and collect ids we need to delete
+ $tagIdSets = $this->pipeline(static function () use ($movedTagSetIds) {
+ foreach ($movedTagSetIds as $movedTagId) {
+ yield 'sMembers' => [$movedTagId];
+ }
+ });
+
+ // Return combination of the temporary Tag Set ids and their values (cache ids)
+ $ids = array_merge($movedTagSetIds, ...iterator_to_array($tagIdSets, false));
+
+ // Delete cache in chunks to avoid overloading the connection
+ foreach (array_chunk(array_unique($ids), self::BULK_DELETE_LIMIT) as $chunkIds) {
+ $this->doDelete($chunkIds);
+ }
+
+ return true;
+ }
+
+ /**
+ * Renames several keys in order to be able to operate on them without risk of race conditions.
+ *
+ * Filters out keys that do not exist before returning new keys.
+ *
+ * @see https://redis.io/commands/rename
+ * @see https://redis.io/topics/cluster-spec#keys-hash-tags
+ *
+ * @return array Filtered list of the valid moved keys (only those that existed)
+ */
+ private function renameKeys($redis, array $ids): array
+ {
+ $newIds = [];
+ $uniqueToken = bin2hex(random_bytes(10));
+
+ $results = $this->pipeline(static function () use ($ids, $uniqueToken) {
+ foreach ($ids as $id) {
+ yield 'rename' => [$id, '{'.$id.'}'.$uniqueToken];
+ }
+ }, $redis);
+
+ foreach ($results as $id => $result) {
+ if (true === $result || ($result instanceof Status && Status::get('OK') === $result)) {
+ // Only take into account if ok (key existed), will be false on phpredis if it did not exist
+ $newIds[] = '{'.$id.'}'.$uniqueToken;
+ }
+ }
+
+ return $newIds;
+ }
+
+ private function getRedisEvictionPolicy(): string
+ {
+ if (null !== $this->redisEvictionPolicy) {
+ return $this->redisEvictionPolicy;
+ }
+
+ foreach ($this->getHosts() as $host) {
+ $info = $host->info('Memory');
+ $info = isset($info['Memory']) ? $info['Memory'] : $info;
+
+ return $this->redisEvictionPolicy = $info['maxmemory_policy'];
+ }
+
+ return $this->redisEvictionPolicy = '';
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/SimpleCacheAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/SimpleCacheAdapter.php
new file mode 100644
index 0000000..d0d42e5
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/SimpleCacheAdapter.php
@@ -0,0 +1,21 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+@trigger_error(sprintf('The "%s" class is @deprecated since Symfony 4.3, use "Psr16Adapter" instead.', SimpleCacheAdapter::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use Psr16Adapter instead.
+ */
+class SimpleCacheAdapter extends Psr16Adapter
+{
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/TagAwareAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/TagAwareAdapter.php
new file mode 100644
index 0000000..7c0ee30
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Adapter/TagAwareAdapter.php
@@ -0,0 +1,429 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Adapter;
+
+use Psr\Cache\CacheItemInterface;
+use Psr\Cache\InvalidArgumentException;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\ContractsTrait;
+use Symfony\Component\Cache\Traits\ProxyTrait;
+use Symfony\Contracts\Cache\TagAwareCacheInterface;
+
+/**
+ * @author Nicolas Grekas
+ */
+class DoctrineProvider extends CacheProvider implements PruneableInterface, ResettableInterface
+{
+ private $pool;
+
+ public function __construct(CacheItemPoolInterface $pool)
+ {
+ $this->pool = $pool;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function prune()
+ {
+ return $this->pool instanceof PruneableInterface && $this->pool->prune();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function reset()
+ {
+ if ($this->pool instanceof ResetInterface) {
+ $this->pool->reset();
+ }
+ $this->setNamespace($this->getNamespace());
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ $item = $this->pool->getItem(rawurlencode($id));
+
+ return $item->isHit() ? $item->get() : false;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ protected function doContains($id)
+ {
+ return $this->pool->hasItem(rawurlencode($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ $item = $this->pool->getItem(rawurlencode($id));
+
+ if (0 < $lifeTime) {
+ $item->expiresAfter($lifeTime);
+ }
+
+ return $this->pool->save($item->set($data));
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ protected function doDelete($id)
+ {
+ return $this->pool->deleteItem(rawurlencode($id));
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ protected function doFlush()
+ {
+ return $this->pool->clear();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return array|null
+ */
+ protected function doGetStats()
+ {
+ return null;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Exception/CacheException.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Exception/CacheException.php
new file mode 100644
index 0000000..d2e975b
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Exception/CacheException.php
@@ -0,0 +1,25 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Exception;
+
+use Psr\Cache\CacheException as Psr6CacheInterface;
+use Psr\SimpleCache\CacheException as SimpleCacheInterface;
+
+if (interface_exists(SimpleCacheInterface::class)) {
+ class CacheException extends \Exception implements Psr6CacheInterface, SimpleCacheInterface
+ {
+ }
+} else {
+ class CacheException extends \Exception implements Psr6CacheInterface
+ {
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Exception/InvalidArgumentException.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Exception/InvalidArgumentException.php
new file mode 100644
index 0000000..7f9584a
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Exception/InvalidArgumentException.php
@@ -0,0 +1,25 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Exception;
+
+use Psr\Cache\InvalidArgumentException as Psr6CacheInterface;
+use Psr\SimpleCache\InvalidArgumentException as SimpleCacheInterface;
+
+if (interface_exists(SimpleCacheInterface::class)) {
+ class InvalidArgumentException extends \InvalidArgumentException implements Psr6CacheInterface, SimpleCacheInterface
+ {
+ }
+} else {
+ class InvalidArgumentException extends \InvalidArgumentException implements Psr6CacheInterface
+ {
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Exception/LogicException.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Exception/LogicException.php
new file mode 100644
index 0000000..9ffa7ed
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Exception/LogicException.php
@@ -0,0 +1,25 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Exception;
+
+use Psr\Cache\CacheException as Psr6CacheInterface;
+use Psr\SimpleCache\CacheException as SimpleCacheInterface;
+
+if (interface_exists(SimpleCacheInterface::class)) {
+ class LogicException extends \LogicException implements Psr6CacheInterface, SimpleCacheInterface
+ {
+ }
+} else {
+ class LogicException extends \LogicException implements Psr6CacheInterface
+ {
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/LICENSE b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/LICENSE
new file mode 100644
index 0000000..a7ec708
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2016-2020 Fabien Potencier
+
+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.
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/LockRegistry.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/LockRegistry.php
new file mode 100644
index 0000000..80601be
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/LockRegistry.php
@@ -0,0 +1,154 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache;
+
+use Psr\Log\LoggerInterface;
+use Symfony\Contracts\Cache\CacheInterface;
+use Symfony\Contracts\Cache\ItemInterface;
+
+/**
+ * LockRegistry is used internally by existing adapters to protect against cache stampede.
+ *
+ * It does so by wrapping the computation of items in a pool of locks.
+ * Foreach each apps, there can be at most 20 concurrent processes that
+ * compute items at the same time and only one per cache-key.
+ *
+ * @author Nicolas Grekas
+ */
+final class LockRegistry
+{
+ private static $openedFiles = [];
+ private static $lockedFiles = [];
+
+ /**
+ * The number of items in this list controls the max number of concurrent processes.
+ */
+ private static $files = [
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'AbstractAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'AbstractTagAwareAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'AdapterInterface.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'ApcuAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'ArrayAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'ChainAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'DoctrineAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'FilesystemAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'FilesystemTagAwareAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'MemcachedAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'NullAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'PdoAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'PhpArrayAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'PhpFilesAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'ProxyAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'Psr16Adapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'RedisAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'RedisTagAwareAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'SimpleCacheAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'TagAwareAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'TagAwareAdapterInterface.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'TraceableAdapter.php',
+ __DIR__.\DIRECTORY_SEPARATOR.'Adapter'.\DIRECTORY_SEPARATOR.'TraceableTagAwareAdapter.php',
+ ];
+
+ /**
+ * Defines a set of existing files that will be used as keys to acquire locks.
+ *
+ * @return array The previously defined set of files
+ */
+ public static function setFiles(array $files): array
+ {
+ $previousFiles = self::$files;
+ self::$files = $files;
+
+ foreach (self::$openedFiles as $file) {
+ if ($file) {
+ flock($file, LOCK_UN);
+ fclose($file);
+ }
+ }
+ self::$openedFiles = self::$lockedFiles = [];
+
+ return $previousFiles;
+ }
+
+ public static function compute(callable $callback, ItemInterface $item, bool &$save, CacheInterface $pool, \Closure $setMetadata = null, LoggerInterface $logger = null)
+ {
+ $key = self::$files ? crc32($item->getKey()) % \count(self::$files) : -1;
+
+ if ($key < 0 || (self::$lockedFiles[$key] ?? false) || !$lock = self::open($key)) {
+ return $callback($item, $save);
+ }
+
+ while (true) {
+ try {
+ // race to get the lock in non-blocking mode
+ $locked = flock($lock, LOCK_EX | LOCK_NB, $wouldBlock);
+
+ if ($locked || !$wouldBlock) {
+ $logger && $logger->info(sprintf('Lock %s, now computing item "{key}"', $locked ? 'acquired' : 'not supported'), ['key' => $item->getKey()]);
+ self::$lockedFiles[$key] = true;
+
+ $value = $callback($item, $save);
+
+ if ($save) {
+ if ($setMetadata) {
+ $setMetadata($item);
+ }
+
+ $pool->save($item->set($value));
+ $save = false;
+ }
+
+ return $value;
+ }
+ // if we failed the race, retry locking in blocking mode to wait for the winner
+ $logger && $logger->info('Item "{key}" is locked, waiting for it to be released', ['key' => $item->getKey()]);
+ flock($lock, LOCK_SH);
+ } finally {
+ flock($lock, LOCK_UN);
+ unset(self::$lockedFiles[$key]);
+ }
+ static $signalingException, $signalingCallback;
+ $signalingException = $signalingException ?? unserialize("O:9:\"Exception\":1:{s:16:\"\0Exception\0trace\";a:0:{}}");
+ $signalingCallback = $signalingCallback ?? function () use ($signalingException) { throw $signalingException; };
+
+ try {
+ $value = $pool->get($item->getKey(), $signalingCallback, 0);
+ $logger && $logger->info('Item "{key}" retrieved after lock was released', ['key' => $item->getKey()]);
+ $save = false;
+
+ return $value;
+ } catch (\Exception $e) {
+ if ($signalingException !== $e) {
+ throw $e;
+ }
+ $logger && $logger->info('Item "{key}" not found while lock was released, now retrying', ['key' => $item->getKey()]);
+ }
+ }
+
+ return null;
+ }
+
+ private static function open(int $key)
+ {
+ if (null !== $h = self::$openedFiles[$key] ?? null) {
+ return $h;
+ }
+ set_error_handler(function () {});
+ try {
+ $h = fopen(self::$files[$key], 'r+');
+ } finally {
+ restore_error_handler();
+ }
+
+ return self::$openedFiles[$key] = $h ?: @fopen(self::$files[$key], 'r');
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/DefaultMarshaller.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/DefaultMarshaller.php
new file mode 100644
index 0000000..f4cad03
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/DefaultMarshaller.php
@@ -0,0 +1,99 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Marshaller;
+
+use Symfony\Component\Cache\Exception\CacheException;
+
+/**
+ * Serializes/unserializes values using igbinary_serialize() if available, serialize() otherwise.
+ *
+ * @author Nicolas Grekas
+ */
+class DefaultMarshaller implements MarshallerInterface
+{
+ private $useIgbinarySerialize = true;
+
+ public function __construct(bool $useIgbinarySerialize = null)
+ {
+ if (null === $useIgbinarySerialize) {
+ $useIgbinarySerialize = \extension_loaded('igbinary') && (\PHP_VERSION_ID < 70400 || version_compare('3.1.0', phpversion('igbinary'), '<='));
+ } elseif ($useIgbinarySerialize && (!\extension_loaded('igbinary') || (\PHP_VERSION_ID >= 70400 && version_compare('3.1.0', phpversion('igbinary'), '>')))) {
+ throw new CacheException(\extension_loaded('igbinary') && \PHP_VERSION_ID >= 70400 ? 'Please upgrade the "igbinary" PHP extension to v3.1 or higher.' : 'The "igbinary" PHP extension is not loaded.');
+ }
+ $this->useIgbinarySerialize = $useIgbinarySerialize;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function marshall(array $values, ?array &$failed): array
+ {
+ $serialized = $failed = [];
+
+ foreach ($values as $id => $value) {
+ try {
+ if ($this->useIgbinarySerialize) {
+ $serialized[$id] = igbinary_serialize($value);
+ } else {
+ $serialized[$id] = serialize($value);
+ }
+ } catch (\Exception $e) {
+ $failed[] = $id;
+ }
+ }
+
+ return $serialized;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function unmarshall(string $value)
+ {
+ if ('b:0;' === $value) {
+ return false;
+ }
+ if ('N;' === $value) {
+ return null;
+ }
+ static $igbinaryNull;
+ if ($value === ($igbinaryNull ?? $igbinaryNull = \extension_loaded('igbinary') && (\PHP_VERSION_ID < 70400 || version_compare('3.1.0', phpversion('igbinary'), '<=')) ? igbinary_serialize(null) : false)) {
+ return null;
+ }
+ $unserializeCallbackHandler = ini_set('unserialize_callback_func', __CLASS__.'::handleUnserializeCallback');
+ try {
+ if (':' === ($value[1] ?? ':')) {
+ if (false !== $value = unserialize($value)) {
+ return $value;
+ }
+ } elseif (false === $igbinaryNull) {
+ throw new \RuntimeException('Failed to unserialize values, did you forget to install the "igbinary" extension?');
+ } elseif (null !== $value = igbinary_unserialize($value)) {
+ return $value;
+ }
+
+ throw new \DomainException(error_get_last() ? error_get_last()['message'] : 'Failed to unserialize values.');
+ } catch (\Error $e) {
+ throw new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine());
+ } finally {
+ ini_set('unserialize_callback_func', $unserializeCallbackHandler);
+ }
+ }
+
+ /**
+ * @internal
+ */
+ public static function handleUnserializeCallback($class)
+ {
+ throw new \DomainException('Class not found: '.$class);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/DeflateMarshaller.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/DeflateMarshaller.php
new file mode 100644
index 0000000..5544806
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/DeflateMarshaller.php
@@ -0,0 +1,53 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Marshaller;
+
+use Symfony\Component\Cache\Exception\CacheException;
+
+/**
+ * Compresses values using gzdeflate().
+ *
+ * @author Nicolas Grekas
+ */
+class DeflateMarshaller implements MarshallerInterface
+{
+ private $marshaller;
+
+ public function __construct(MarshallerInterface $marshaller)
+ {
+ if (!\function_exists('gzdeflate')) {
+ throw new CacheException('The "zlib" PHP extension is not loaded.');
+ }
+
+ $this->marshaller = $marshaller;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function marshall(array $values, ?array &$failed): array
+ {
+ return array_map('gzdeflate', $this->marshaller->marshall($values, $failed));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function unmarshall(string $value)
+ {
+ if (false !== $inflatedValue = @gzinflate($value)) {
+ $value = $inflatedValue;
+ }
+
+ return $this->marshaller->unmarshall($value);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/MarshallerInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/MarshallerInterface.php
new file mode 100644
index 0000000..cdd6c40
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/MarshallerInterface.php
@@ -0,0 +1,40 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Marshaller;
+
+/**
+ * Serializes/unserializes PHP values.
+ *
+ * Implementations of this interface MUST deal with errors carefully. They MUST
+ * also deal with forward and backward compatibility at the storage format level.
+ *
+ * @author Nicolas Grekas
+ */
+interface MarshallerInterface
+{
+ /**
+ * Serializes a list of values.
+ *
+ * When serialization fails for a specific value, no exception should be
+ * thrown. Instead, its key should be listed in $failed.
+ */
+ public function marshall(array $values, ?array &$failed): array;
+
+ /**
+ * Unserializes a single value and throws an exception if anything goes wrong.
+ *
+ * @return mixed
+ *
+ * @throws \Exception Whenever unserialization fails
+ */
+ public function unmarshall(string $value);
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/TagAwareMarshaller.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/TagAwareMarshaller.php
new file mode 100644
index 0000000..5d1e303
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Marshaller/TagAwareMarshaller.php
@@ -0,0 +1,89 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Marshaller;
+
+/**
+ * A marshaller optimized for data structures generated by AbstractTagAwareAdapter.
+ *
+ * @author Nicolas Grekas
+ */
+class TagAwareMarshaller implements MarshallerInterface
+{
+ private $marshaller;
+
+ public function __construct(MarshallerInterface $marshaller = null)
+ {
+ $this->marshaller = $marshaller ?? new DefaultMarshaller();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function marshall(array $values, ?array &$failed): array
+ {
+ $failed = $notSerialized = $serialized = [];
+
+ foreach ($values as $id => $value) {
+ if (\is_array($value) && \is_array($value['tags'] ?? null) && \array_key_exists('value', $value) && \count($value) === 2 + (\is_string($value['meta'] ?? null) && 8 === \strlen($value['meta']))) {
+ // if the value is an array with keys "tags", "value" and "meta", use a compact serialization format
+ // magic numbers in the form 9D-..-..-..-..-00-..-..-..-5F allow detecting this format quickly in unmarshall()
+
+ $v = $this->marshaller->marshall($value, $f);
+
+ if ($f) {
+ $f = [];
+ $failed[] = $id;
+ } else {
+ if ([] === $value['tags']) {
+ $v['tags'] = '';
+ }
+
+ $serialized[$id] = "\x9D".($value['meta'] ?? "\0\0\0\0\0\0\0\0").pack('N', \strlen($v['tags'])).$v['tags'].$v['value'];
+ $serialized[$id][9] = "\x5F";
+ }
+ } else {
+ // other arbitratry values are serialized using the decorated marshaller below
+ $notSerialized[$id] = $value;
+ }
+ }
+
+ if ($notSerialized) {
+ $serialized += $this->marshaller->marshall($notSerialized, $f);
+ $failed = array_merge($failed, $f);
+ }
+
+ return $serialized;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function unmarshall(string $value)
+ {
+ // detect the compact format used in marshall() using magic numbers in the form 9D-..-..-..-..-00-..-..-..-5F
+ if (13 >= \strlen($value) || "\x9D" !== $value[0] || "\0" !== $value[5] || "\x5F" !== $value[9]) {
+ return $this->marshaller->unmarshall($value);
+ }
+
+ // data consists of value, tags and metadata which we need to unpack
+ $meta = substr($value, 1, 12);
+ $meta[8] = "\0";
+ $tagLen = unpack('Nlen', $meta, 8)['len'];
+ $meta = substr($meta, 0, 8);
+
+ return [
+ 'value' => $this->marshaller->unmarshall(substr($value, 13 + $tagLen)),
+ 'tags' => $tagLen ? $this->marshaller->unmarshall(substr($value, 13, $tagLen)) : [],
+ 'meta' => "\0\0\0\0\0\0\0\0" === $meta ? null : $meta,
+ ];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/PruneableInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/PruneableInterface.php
new file mode 100644
index 0000000..4261525
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/PruneableInterface.php
@@ -0,0 +1,23 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache;
+
+/**
+ * Interface extends psr-6 and psr-16 caches to allow for pruning (deletion) of all expired cache items.
+ */
+interface PruneableInterface
+{
+ /**
+ * @return bool
+ */
+ public function prune();
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Psr16Cache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Psr16Cache.php
new file mode 100644
index 0000000..7358bf5
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Psr16Cache.php
@@ -0,0 +1,277 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache;
+
+use Psr\Cache\CacheException as Psr6CacheException;
+use Psr\Cache\CacheItemPoolInterface;
+use Psr\SimpleCache\CacheException as SimpleCacheException;
+use Psr\SimpleCache\CacheInterface;
+use Symfony\Component\Cache\Adapter\AdapterInterface;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\Traits\ProxyTrait;
+
+/**
+ * Turns a PSR-6 cache into a PSR-16 one.
+ *
+ * @author Nicolas Grekas
+ */
+class Psr16Cache implements CacheInterface, PruneableInterface, ResettableInterface
+{
+ use ProxyTrait;
+
+ private const METADATA_EXPIRY_OFFSET = 1527506807;
+
+ private $createCacheItem;
+ private $cacheItemPrototype;
+
+ public function __construct(CacheItemPoolInterface $pool)
+ {
+ $this->pool = $pool;
+
+ if (!$pool instanceof AdapterInterface) {
+ return;
+ }
+ $cacheItemPrototype = &$this->cacheItemPrototype;
+ $createCacheItem = \Closure::bind(
+ static function ($key, $value, $allowInt = false) use (&$cacheItemPrototype) {
+ $item = clone $cacheItemPrototype;
+ $item->key = $allowInt && \is_int($key) ? (string) $key : CacheItem::validateKey($key);
+ $item->value = $value;
+ $item->isHit = false;
+
+ return $item;
+ },
+ null,
+ CacheItem::class
+ );
+ $this->createCacheItem = function ($key, $value, $allowInt = false) use ($createCacheItem) {
+ if (null === $this->cacheItemPrototype) {
+ $this->get($allowInt && \is_int($key) ? (string) $key : $key);
+ }
+ $this->createCacheItem = $createCacheItem;
+
+ return $createCacheItem($key, null, $allowInt)->set($value);
+ };
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($key, $default = null)
+ {
+ try {
+ $item = $this->pool->getItem($key);
+ } catch (SimpleCacheException $e) {
+ throw $e;
+ } catch (Psr6CacheException $e) {
+ throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
+ }
+ if (null === $this->cacheItemPrototype) {
+ $this->cacheItemPrototype = clone $item;
+ $this->cacheItemPrototype->set(null);
+ }
+
+ return $item->isHit() ? $item->get() : $default;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function set($key, $value, $ttl = null)
+ {
+ try {
+ if (null !== $f = $this->createCacheItem) {
+ $item = $f($key, $value);
+ } else {
+ $item = $this->pool->getItem($key)->set($value);
+ }
+ } catch (SimpleCacheException $e) {
+ throw $e;
+ } catch (Psr6CacheException $e) {
+ throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
+ }
+ if (null !== $ttl) {
+ $item->expiresAfter($ttl);
+ }
+
+ return $this->pool->save($item);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function delete($key)
+ {
+ try {
+ return $this->pool->deleteItem($key);
+ } catch (SimpleCacheException $e) {
+ throw $e;
+ } catch (Psr6CacheException $e) {
+ throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function clear()
+ {
+ return $this->pool->clear();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return iterable
+ */
+ public function getMultiple($keys, $default = null)
+ {
+ if ($keys instanceof \Traversable) {
+ $keys = iterator_to_array($keys, false);
+ } elseif (!\is_array($keys)) {
+ throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given.', \is_object($keys) ? \get_class($keys) : \gettype($keys)));
+ }
+
+ try {
+ $items = $this->pool->getItems($keys);
+ } catch (SimpleCacheException $e) {
+ throw $e;
+ } catch (Psr6CacheException $e) {
+ throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
+ }
+ $values = [];
+
+ if (!$this->pool instanceof AdapterInterface) {
+ foreach ($items as $key => $item) {
+ $values[$key] = $item->isHit() ? $item->get() : $default;
+ }
+
+ return $values;
+ }
+
+ foreach ($items as $key => $item) {
+ if (!$item->isHit()) {
+ $values[$key] = $default;
+ continue;
+ }
+ $values[$key] = $item->get();
+
+ if (!$metadata = $item->getMetadata()) {
+ continue;
+ }
+ unset($metadata[CacheItem::METADATA_TAGS]);
+
+ if ($metadata) {
+ $values[$key] = ["\x9D".pack('VN', (int) (0.1 + $metadata[CacheItem::METADATA_EXPIRY] - self::METADATA_EXPIRY_OFFSET), $metadata[CacheItem::METADATA_CTIME])."\x5F" => $values[$key]];
+ }
+ }
+
+ return $values;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function setMultiple($values, $ttl = null)
+ {
+ $valuesIsArray = \is_array($values);
+ if (!$valuesIsArray && !$values instanceof \Traversable) {
+ throw new InvalidArgumentException(sprintf('Cache values must be array or Traversable, "%s" given.', \is_object($values) ? \get_class($values) : \gettype($values)));
+ }
+ $items = [];
+
+ try {
+ if (null !== $f = $this->createCacheItem) {
+ $valuesIsArray = false;
+ foreach ($values as $key => $value) {
+ $items[$key] = $f($key, $value, true);
+ }
+ } elseif ($valuesIsArray) {
+ $items = [];
+ foreach ($values as $key => $value) {
+ $items[] = (string) $key;
+ }
+ $items = $this->pool->getItems($items);
+ } else {
+ foreach ($values as $key => $value) {
+ if (\is_int($key)) {
+ $key = (string) $key;
+ }
+ $items[$key] = $this->pool->getItem($key)->set($value);
+ }
+ }
+ } catch (SimpleCacheException $e) {
+ throw $e;
+ } catch (Psr6CacheException $e) {
+ throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
+ }
+ $ok = true;
+
+ foreach ($items as $key => $item) {
+ if ($valuesIsArray) {
+ $item->set($values[$key]);
+ }
+ if (null !== $ttl) {
+ $item->expiresAfter($ttl);
+ }
+ $ok = $this->pool->saveDeferred($item) && $ok;
+ }
+
+ return $this->pool->commit() && $ok;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteMultiple($keys)
+ {
+ if ($keys instanceof \Traversable) {
+ $keys = iterator_to_array($keys, false);
+ } elseif (!\is_array($keys)) {
+ throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given.', \is_object($keys) ? \get_class($keys) : \gettype($keys)));
+ }
+
+ try {
+ return $this->pool->deleteItems($keys);
+ } catch (SimpleCacheException $e) {
+ throw $e;
+ } catch (Psr6CacheException $e) {
+ throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function has($key)
+ {
+ try {
+ return $this->pool->hasItem($key);
+ } catch (SimpleCacheException $e) {
+ throw $e;
+ } catch (Psr6CacheException $e) {
+ throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e);
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/README.md b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/README.md
new file mode 100644
index 0000000..c4ab752
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/README.md
@@ -0,0 +1,18 @@
+Symfony PSR-6 implementation for caching
+========================================
+
+This component provides an extended [PSR-6](http://www.php-fig.org/psr/psr-6/)
+implementation for adding cache to your applications. It is designed to have a
+low overhead so that caching is fastest. It ships with a few caching adapters
+for the most widespread and suited to caching backends. It also provides a
+`doctrine/cache` proxy adapter to cover more advanced caching needs and a proxy
+adapter for greater interoperability between PSR-6 implementations.
+
+Resources
+---------
+
+ * [Documentation](https://symfony.com/doc/current/components/cache.html)
+ * [Contributing](https://symfony.com/doc/current/contributing/index.html)
+ * [Report issues](https://github.com/symfony/symfony/issues) and
+ [send Pull Requests](https://github.com/symfony/symfony/pulls)
+ in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/ResettableInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/ResettableInterface.php
new file mode 100644
index 0000000..7b0a853
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/ResettableInterface.php
@@ -0,0 +1,21 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache;
+
+use Symfony\Contracts\Service\ResetInterface;
+
+/**
+ * Resets a pool's local state.
+ */
+interface ResettableInterface extends ResetInterface
+{
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/AbstractCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/AbstractCache.php
new file mode 100644
index 0000000..85bbeb6
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/AbstractCache.php
@@ -0,0 +1,199 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Psr\Log\LoggerAwareInterface;
+use Psr\SimpleCache\CacheInterface as Psr16CacheInterface;
+use Symfony\Component\Cache\Adapter\AbstractAdapter;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\AbstractTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', AbstractCache::class, AbstractAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use AbstractAdapter and type-hint for CacheInterface instead.
+ */
+abstract class AbstractCache implements Psr16CacheInterface, LoggerAwareInterface, ResettableInterface
+{
+ /**
+ * @internal
+ */
+ protected const NS_SEPARATOR = ':';
+
+ use AbstractTrait {
+ deleteItems as private;
+ AbstractTrait::deleteItem as delete;
+ AbstractTrait::hasItem as has;
+ }
+
+ private $defaultLifetime;
+
+ protected function __construct(string $namespace = '', int $defaultLifetime = 0)
+ {
+ $this->defaultLifetime = max(0, $defaultLifetime);
+ $this->namespace = '' === $namespace ? '' : CacheItem::validateKey($namespace).':';
+ if (null !== $this->maxIdLength && \strlen($namespace) > $this->maxIdLength - 24) {
+ throw new InvalidArgumentException(sprintf('Namespace must be %d chars max, %d given ("%s").', $this->maxIdLength - 24, \strlen($namespace), $namespace));
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($key, $default = null)
+ {
+ $id = $this->getId($key);
+
+ try {
+ foreach ($this->doFetch([$id]) as $value) {
+ return $value;
+ }
+ } catch (\Exception $e) {
+ CacheItem::log($this->logger, 'Failed to fetch key "{key}": '.$e->getMessage(), ['key' => $key, 'exception' => $e]);
+ }
+
+ return $default;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function set($key, $value, $ttl = null)
+ {
+ CacheItem::validateKey($key);
+
+ return $this->setMultiple([$key => $value], $ttl);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return iterable
+ */
+ public function getMultiple($keys, $default = null)
+ {
+ if ($keys instanceof \Traversable) {
+ $keys = iterator_to_array($keys, false);
+ } elseif (!\is_array($keys)) {
+ throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given.', \is_object($keys) ? \get_class($keys) : \gettype($keys)));
+ }
+ $ids = [];
+
+ foreach ($keys as $key) {
+ $ids[] = $this->getId($key);
+ }
+ try {
+ $values = $this->doFetch($ids);
+ } catch (\Exception $e) {
+ CacheItem::log($this->logger, 'Failed to fetch values: '.$e->getMessage(), ['keys' => $keys, 'exception' => $e]);
+ $values = [];
+ }
+ $ids = array_combine($ids, $keys);
+
+ return $this->generateValues($values, $ids, $default);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function setMultiple($values, $ttl = null)
+ {
+ if (!\is_array($values) && !$values instanceof \Traversable) {
+ throw new InvalidArgumentException(sprintf('Cache values must be array or Traversable, "%s" given.', \is_object($values) ? \get_class($values) : \gettype($values)));
+ }
+ $valuesById = [];
+
+ foreach ($values as $key => $value) {
+ if (\is_int($key)) {
+ $key = (string) $key;
+ }
+ $valuesById[$this->getId($key)] = $value;
+ }
+ if (false === $ttl = $this->normalizeTtl($ttl)) {
+ return $this->doDelete(array_keys($valuesById));
+ }
+
+ try {
+ $e = $this->doSave($valuesById, $ttl);
+ } catch (\Exception $e) {
+ }
+ if (true === $e || [] === $e) {
+ return true;
+ }
+ $keys = [];
+ foreach (\is_array($e) ? $e : array_keys($valuesById) as $id) {
+ $keys[] = substr($id, \strlen($this->namespace));
+ }
+ $message = 'Failed to save values'.($e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ CacheItem::log($this->logger, $message, ['keys' => $keys, 'exception' => $e instanceof \Exception ? $e : null]);
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteMultiple($keys)
+ {
+ if ($keys instanceof \Traversable) {
+ $keys = iterator_to_array($keys, false);
+ } elseif (!\is_array($keys)) {
+ throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given.', \is_object($keys) ? \get_class($keys) : \gettype($keys)));
+ }
+
+ return $this->deleteItems($keys);
+ }
+
+ private function normalizeTtl($ttl)
+ {
+ if (null === $ttl) {
+ return $this->defaultLifetime;
+ }
+ if ($ttl instanceof \DateInterval) {
+ $ttl = (int) \DateTime::createFromFormat('U', 0)->add($ttl)->format('U');
+ }
+ if (\is_int($ttl)) {
+ return 0 < $ttl ? $ttl : false;
+ }
+
+ throw new InvalidArgumentException(sprintf('Expiration date must be an integer, a DateInterval or null, "%s" given.', \is_object($ttl) ? \get_class($ttl) : \gettype($ttl)));
+ }
+
+ private function generateValues(iterable $values, array &$keys, $default): iterable
+ {
+ try {
+ foreach ($values as $id => $value) {
+ if (!isset($keys[$id])) {
+ $id = key($keys);
+ }
+ $key = $keys[$id];
+ unset($keys[$id]);
+ yield $key => $value;
+ }
+ } catch (\Exception $e) {
+ CacheItem::log($this->logger, 'Failed to fetch values: '.$e->getMessage(), ['keys' => array_values($keys), 'exception' => $e]);
+ }
+
+ foreach ($keys as $key) {
+ yield $key => $default;
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/ApcuCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/ApcuCache.php
new file mode 100644
index 0000000..f1eb946
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/ApcuCache.php
@@ -0,0 +1,31 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Symfony\Component\Cache\Adapter\ApcuAdapter;
+use Symfony\Component\Cache\Traits\ApcuTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', ApcuCache::class, ApcuAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use ApcuAdapter and type-hint for CacheInterface instead.
+ */
+class ApcuCache extends AbstractCache
+{
+ use ApcuTrait;
+
+ public function __construct(string $namespace = '', int $defaultLifetime = 0, string $version = null)
+ {
+ $this->init($namespace, $defaultLifetime, $version);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/ArrayCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/ArrayCache.php
new file mode 100644
index 0000000..a3d4c67
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/ArrayCache.php
@@ -0,0 +1,167 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Psr\Log\LoggerAwareInterface;
+use Psr\SimpleCache\CacheInterface as Psr16CacheInterface;
+use Symfony\Component\Cache\Adapter\ArrayAdapter;
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\ArrayTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', ArrayCache::class, ArrayAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use ArrayAdapter and type-hint for CacheInterface instead.
+ */
+class ArrayCache implements Psr16CacheInterface, LoggerAwareInterface, ResettableInterface
+{
+ use ArrayTrait {
+ ArrayTrait::deleteItem as delete;
+ ArrayTrait::hasItem as has;
+ }
+
+ private $defaultLifetime;
+
+ /**
+ * @param bool $storeSerialized Disabling serialization can lead to cache corruptions when storing mutable values but increases performance otherwise
+ */
+ public function __construct(int $defaultLifetime = 0, bool $storeSerialized = true)
+ {
+ $this->defaultLifetime = $defaultLifetime;
+ $this->storeSerialized = $storeSerialized;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($key, $default = null)
+ {
+ if (!\is_string($key) || !isset($this->expiries[$key])) {
+ CacheItem::validateKey($key);
+ }
+ if (!$isHit = isset($this->expiries[$key]) && ($this->expiries[$key] > microtime(true) || !$this->delete($key))) {
+ $this->values[$key] = null;
+
+ return $default;
+ }
+ if (!$this->storeSerialized) {
+ return $this->values[$key];
+ }
+ $value = $this->unfreeze($key, $isHit);
+
+ return $isHit ? $value : $default;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return iterable
+ */
+ public function getMultiple($keys, $default = null)
+ {
+ if ($keys instanceof \Traversable) {
+ $keys = iterator_to_array($keys, false);
+ } elseif (!\is_array($keys)) {
+ throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given.', \is_object($keys) ? \get_class($keys) : \gettype($keys)));
+ }
+ foreach ($keys as $key) {
+ if (!\is_string($key) || !isset($this->expiries[$key])) {
+ CacheItem::validateKey($key);
+ }
+ }
+
+ return $this->generateItems($keys, microtime(true), function ($k, $v, $hit) use ($default) { return $hit ? $v : $default; });
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteMultiple($keys)
+ {
+ if (!\is_array($keys) && !$keys instanceof \Traversable) {
+ throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given.', \is_object($keys) ? \get_class($keys) : \gettype($keys)));
+ }
+ foreach ($keys as $key) {
+ $this->delete($key);
+ }
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function set($key, $value, $ttl = null)
+ {
+ if (!\is_string($key)) {
+ CacheItem::validateKey($key);
+ }
+
+ return $this->setMultiple([$key => $value], $ttl);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function setMultiple($values, $ttl = null)
+ {
+ if (!\is_array($values) && !$values instanceof \Traversable) {
+ throw new InvalidArgumentException(sprintf('Cache values must be array or Traversable, "%s" given.', \is_object($values) ? \get_class($values) : \gettype($values)));
+ }
+ $valuesArray = [];
+
+ foreach ($values as $key => $value) {
+ if (!\is_int($key) && !(\is_string($key) && isset($this->expiries[$key]))) {
+ CacheItem::validateKey($key);
+ }
+ $valuesArray[$key] = $value;
+ }
+ if (false === $ttl = $this->normalizeTtl($ttl)) {
+ return $this->deleteMultiple(array_keys($valuesArray));
+ }
+ $expiry = 0 < $ttl ? microtime(true) + $ttl : PHP_INT_MAX;
+
+ foreach ($valuesArray as $key => $value) {
+ if ($this->storeSerialized && null === $value = $this->freeze($value, $key)) {
+ return false;
+ }
+ $this->values[$key] = $value;
+ $this->expiries[$key] = $expiry;
+ }
+
+ return true;
+ }
+
+ private function normalizeTtl($ttl)
+ {
+ if (null === $ttl) {
+ return $this->defaultLifetime;
+ }
+ if ($ttl instanceof \DateInterval) {
+ $ttl = (int) \DateTime::createFromFormat('U', 0)->add($ttl)->format('U');
+ }
+ if (\is_int($ttl)) {
+ return 0 < $ttl ? $ttl : false;
+ }
+
+ throw new InvalidArgumentException(sprintf('Expiration date must be an integer, a DateInterval or null, "%s" given.', \is_object($ttl) ? \get_class($ttl) : \gettype($ttl)));
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/ChainCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/ChainCache.php
new file mode 100644
index 0000000..57a169f
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/ChainCache.php
@@ -0,0 +1,271 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Psr\SimpleCache\CacheInterface as Psr16CacheInterface;
+use Symfony\Component\Cache\Adapter\ChainAdapter;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Contracts\Cache\CacheInterface;
+use Symfony\Contracts\Service\ResetInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', ChainCache::class, ChainAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * Chains several caches together.
+ *
+ * Cached items are fetched from the first cache having them in its data store.
+ * They are saved and deleted in all caches at once.
+ *
+ * @deprecated since Symfony 4.3, use ChainAdapter and type-hint for CacheInterface instead.
+ */
+class ChainCache implements Psr16CacheInterface, PruneableInterface, ResettableInterface
+{
+ private $miss;
+ private $caches = [];
+ private $defaultLifetime;
+ private $cacheCount;
+
+ /**
+ * @param Psr16CacheInterface[] $caches The ordered list of caches used to fetch cached items
+ * @param int $defaultLifetime The lifetime of items propagated from lower caches to upper ones
+ */
+ public function __construct(array $caches, int $defaultLifetime = 0)
+ {
+ if (!$caches) {
+ throw new InvalidArgumentException('At least one cache must be specified.');
+ }
+
+ foreach ($caches as $cache) {
+ if (!$cache instanceof Psr16CacheInterface) {
+ throw new InvalidArgumentException(sprintf('The class "%s" does not implement the "%s" interface.', \get_class($cache), Psr16CacheInterface::class));
+ }
+ }
+
+ $this->miss = new \stdClass();
+ $this->caches = array_values($caches);
+ $this->cacheCount = \count($this->caches);
+ $this->defaultLifetime = 0 < $defaultLifetime ? $defaultLifetime : null;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($key, $default = null)
+ {
+ $miss = null !== $default && \is_object($default) ? $default : $this->miss;
+
+ foreach ($this->caches as $i => $cache) {
+ $value = $cache->get($key, $miss);
+
+ if ($miss !== $value) {
+ while (0 <= --$i) {
+ $this->caches[$i]->set($key, $value, $this->defaultLifetime);
+ }
+
+ return $value;
+ }
+ }
+
+ return $default;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return iterable
+ */
+ public function getMultiple($keys, $default = null)
+ {
+ $miss = null !== $default && \is_object($default) ? $default : $this->miss;
+
+ return $this->generateItems($this->caches[0]->getMultiple($keys, $miss), 0, $miss, $default);
+ }
+
+ private function generateItems(iterable $values, int $cacheIndex, $miss, $default): iterable
+ {
+ $missing = [];
+ $nextCacheIndex = $cacheIndex + 1;
+ $nextCache = isset($this->caches[$nextCacheIndex]) ? $this->caches[$nextCacheIndex] : null;
+
+ foreach ($values as $k => $value) {
+ if ($miss !== $value) {
+ yield $k => $value;
+ } elseif (!$nextCache) {
+ yield $k => $default;
+ } else {
+ $missing[] = $k;
+ }
+ }
+
+ if ($missing) {
+ $cache = $this->caches[$cacheIndex];
+ $values = $this->generateItems($nextCache->getMultiple($missing, $miss), $nextCacheIndex, $miss, $default);
+
+ foreach ($values as $k => $value) {
+ if ($miss !== $value) {
+ $cache->set($k, $value, $this->defaultLifetime);
+ yield $k => $value;
+ } else {
+ yield $k => $default;
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function has($key)
+ {
+ foreach ($this->caches as $cache) {
+ if ($cache->has($key)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function clear()
+ {
+ $cleared = true;
+ $i = $this->cacheCount;
+
+ while ($i--) {
+ $cleared = $this->caches[$i]->clear() && $cleared;
+ }
+
+ return $cleared;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function delete($key)
+ {
+ $deleted = true;
+ $i = $this->cacheCount;
+
+ while ($i--) {
+ $deleted = $this->caches[$i]->delete($key) && $deleted;
+ }
+
+ return $deleted;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteMultiple($keys)
+ {
+ if ($keys instanceof \Traversable) {
+ $keys = iterator_to_array($keys, false);
+ }
+ $deleted = true;
+ $i = $this->cacheCount;
+
+ while ($i--) {
+ $deleted = $this->caches[$i]->deleteMultiple($keys) && $deleted;
+ }
+
+ return $deleted;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function set($key, $value, $ttl = null)
+ {
+ $saved = true;
+ $i = $this->cacheCount;
+
+ while ($i--) {
+ $saved = $this->caches[$i]->set($key, $value, $ttl) && $saved;
+ }
+
+ return $saved;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function setMultiple($values, $ttl = null)
+ {
+ if ($values instanceof \Traversable) {
+ $valuesIterator = $values;
+ $values = function () use ($valuesIterator, &$values) {
+ $generatedValues = [];
+
+ foreach ($valuesIterator as $key => $value) {
+ yield $key => $value;
+ $generatedValues[$key] = $value;
+ }
+
+ $values = $generatedValues;
+ };
+ $values = $values();
+ }
+ $saved = true;
+ $i = $this->cacheCount;
+
+ while ($i--) {
+ $saved = $this->caches[$i]->setMultiple($values, $ttl) && $saved;
+ }
+
+ return $saved;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function prune()
+ {
+ $pruned = true;
+
+ foreach ($this->caches as $cache) {
+ if ($cache instanceof PruneableInterface) {
+ $pruned = $cache->prune() && $pruned;
+ }
+ }
+
+ return $pruned;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function reset()
+ {
+ foreach ($this->caches as $cache) {
+ if ($cache instanceof ResetInterface) {
+ $cache->reset();
+ }
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/DoctrineCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/DoctrineCache.php
new file mode 100644
index 0000000..6a6d003
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/DoctrineCache.php
@@ -0,0 +1,34 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Doctrine\Common\Cache\CacheProvider;
+use Symfony\Component\Cache\Adapter\DoctrineAdapter;
+use Symfony\Component\Cache\Traits\DoctrineTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', DoctrineCache::class, DoctrineAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use DoctrineAdapter and type-hint for CacheInterface instead.
+ */
+class DoctrineCache extends AbstractCache
+{
+ use DoctrineTrait;
+
+ public function __construct(CacheProvider $provider, string $namespace = '', int $defaultLifetime = 0)
+ {
+ parent::__construct('', $defaultLifetime);
+ $this->provider = $provider;
+ $provider->setNamespace($namespace);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/FilesystemCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/FilesystemCache.php
new file mode 100644
index 0000000..8891abd
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/FilesystemCache.php
@@ -0,0 +1,36 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Symfony\Component\Cache\Adapter\FilesystemAdapter;
+use Symfony\Component\Cache\Marshaller\DefaultMarshaller;
+use Symfony\Component\Cache\Marshaller\MarshallerInterface;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\Traits\FilesystemTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', FilesystemCache::class, FilesystemAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use FilesystemAdapter and type-hint for CacheInterface instead.
+ */
+class FilesystemCache extends AbstractCache implements PruneableInterface
+{
+ use FilesystemTrait;
+
+ public function __construct(string $namespace = '', int $defaultLifetime = 0, string $directory = null, MarshallerInterface $marshaller = null)
+ {
+ $this->marshaller = $marshaller ?? new DefaultMarshaller();
+ parent::__construct('', $defaultLifetime);
+ $this->init($namespace, $directory);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/MemcachedCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/MemcachedCache.php
new file mode 100644
index 0000000..e193411
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/MemcachedCache.php
@@ -0,0 +1,34 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Symfony\Component\Cache\Adapter\MemcachedAdapter;
+use Symfony\Component\Cache\Marshaller\MarshallerInterface;
+use Symfony\Component\Cache\Traits\MemcachedTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', MemcachedCache::class, MemcachedAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use MemcachedAdapter and type-hint for CacheInterface instead.
+ */
+class MemcachedCache extends AbstractCache
+{
+ use MemcachedTrait;
+
+ protected $maxIdLength = 250;
+
+ public function __construct(\Memcached $client, string $namespace = '', int $defaultLifetime = 0, MarshallerInterface $marshaller = null)
+ {
+ $this->init($client, $namespace, $defaultLifetime, $marshaller);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/NullCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/NullCache.php
new file mode 100644
index 0000000..35600fc
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/NullCache.php
@@ -0,0 +1,104 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Psr\SimpleCache\CacheInterface as Psr16CacheInterface;
+use Symfony\Component\Cache\Adapter\NullAdapter;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', NullCache::class, NullAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use NullAdapter and type-hint for CacheInterface instead.
+ */
+class NullCache implements Psr16CacheInterface
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function get($key, $default = null)
+ {
+ return $default;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return iterable
+ */
+ public function getMultiple($keys, $default = null)
+ {
+ foreach ($keys as $key) {
+ yield $key => $default;
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function has($key)
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function clear()
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function delete($key)
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteMultiple($keys)
+ {
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function set($key, $value, $ttl = null)
+ {
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function setMultiple($values, $ttl = null)
+ {
+ return false;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/PdoCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/PdoCache.php
new file mode 100644
index 0000000..07849e9
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/PdoCache.php
@@ -0,0 +1,59 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Symfony\Component\Cache\Adapter\PdoAdapter;
+use Symfony\Component\Cache\Marshaller\MarshallerInterface;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\Traits\PdoTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', PdoCache::class, PdoAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use PdoAdapter and type-hint for CacheInterface instead.
+ */
+class PdoCache extends AbstractCache implements PruneableInterface
+{
+ use PdoTrait;
+
+ protected $maxIdLength = 255;
+
+ /**
+ * You can either pass an existing database connection as PDO instance or
+ * a Doctrine DBAL Connection or a DSN string that will be used to
+ * lazy-connect to the database when the cache is actually used.
+ *
+ * When a Doctrine DBAL Connection is passed, the cache table is created
+ * automatically when possible. Otherwise, use the createTable() method.
+ *
+ * List of available options:
+ * * db_table: The name of the table [default: cache_items]
+ * * db_id_col: The column where to store the cache id [default: item_id]
+ * * db_data_col: The column where to store the cache data [default: item_data]
+ * * db_lifetime_col: The column where to store the lifetime [default: item_lifetime]
+ * * db_time_col: The column where to store the timestamp [default: item_time]
+ * * db_username: The username when lazy-connect [default: '']
+ * * db_password: The password when lazy-connect [default: '']
+ * * db_connection_options: An array of driver-specific connection options [default: []]
+ *
+ * @param \PDO|Connection|string $connOrDsn a \PDO or Connection instance or DSN string or null
+ *
+ * @throws InvalidArgumentException When first argument is not PDO nor Connection nor string
+ * @throws InvalidArgumentException When PDO error mode is not PDO::ERRMODE_EXCEPTION
+ * @throws InvalidArgumentException When namespace contains invalid characters
+ */
+ public function __construct($connOrDsn, string $namespace = '', int $defaultLifetime = 0, array $options = [], MarshallerInterface $marshaller = null)
+ {
+ $this->init($connOrDsn, $namespace, $defaultLifetime, $options, $marshaller);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/PhpArrayCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/PhpArrayCache.php
new file mode 100644
index 0000000..92b79e3
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/PhpArrayCache.php
@@ -0,0 +1,256 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Psr\SimpleCache\CacheInterface as Psr16CacheInterface;
+use Symfony\Component\Cache\Adapter\PhpArrayAdapter;
+use Symfony\Component\Cache\Exception\InvalidArgumentException;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Component\Cache\Traits\PhpArrayTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', PhpArrayCache::class, PhpArrayAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use PhpArrayAdapter and type-hint for CacheInterface instead.
+ */
+class PhpArrayCache implements Psr16CacheInterface, PruneableInterface, ResettableInterface
+{
+ use PhpArrayTrait;
+
+ /**
+ * @param string $file The PHP file were values are cached
+ * @param Psr16CacheInterface $fallbackPool A pool to fallback on when an item is not hit
+ */
+ public function __construct(string $file, Psr16CacheInterface $fallbackPool)
+ {
+ $this->file = $file;
+ $this->pool = $fallbackPool;
+ }
+
+ /**
+ * This adapter takes advantage of how PHP stores arrays in its latest versions.
+ *
+ * @param string $file The PHP file were values are cached
+ * @param CacheInterface $fallbackPool A pool to fallback on when an item is not hit
+ *
+ * @return Psr16CacheInterface
+ */
+ public static function create($file, Psr16CacheInterface $fallbackPool)
+ {
+ return new static($file, $fallbackPool);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($key, $default = null)
+ {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+ if (!isset($this->keys[$key])) {
+ return $this->pool->get($key, $default);
+ }
+ $value = $this->values[$this->keys[$key]];
+
+ if ('N;' === $value) {
+ return null;
+ }
+ if ($value instanceof \Closure) {
+ try {
+ return $value();
+ } catch (\Throwable $e) {
+ return $default;
+ }
+ }
+
+ return $value;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return iterable
+ */
+ public function getMultiple($keys, $default = null)
+ {
+ if ($keys instanceof \Traversable) {
+ $keys = iterator_to_array($keys, false);
+ } elseif (!\is_array($keys)) {
+ throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given.', \is_object($keys) ? \get_class($keys) : \gettype($keys)));
+ }
+ foreach ($keys as $key) {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ return $this->generateItems($keys, $default);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function has($key)
+ {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ return isset($this->keys[$key]) || $this->pool->has($key);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function delete($key)
+ {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ return !isset($this->keys[$key]) && $this->pool->delete($key);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteMultiple($keys)
+ {
+ if (!\is_array($keys) && !$keys instanceof \Traversable) {
+ throw new InvalidArgumentException(sprintf('Cache keys must be array or Traversable, "%s" given.', \is_object($keys) ? \get_class($keys) : \gettype($keys)));
+ }
+
+ $deleted = true;
+ $fallbackKeys = [];
+
+ foreach ($keys as $key) {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+
+ if (isset($this->keys[$key])) {
+ $deleted = false;
+ } else {
+ $fallbackKeys[] = $key;
+ }
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ if ($fallbackKeys) {
+ $deleted = $this->pool->deleteMultiple($fallbackKeys) && $deleted;
+ }
+
+ return $deleted;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function set($key, $value, $ttl = null)
+ {
+ if (!\is_string($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+ if (null === $this->values) {
+ $this->initialize();
+ }
+
+ return !isset($this->keys[$key]) && $this->pool->set($key, $value, $ttl);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function setMultiple($values, $ttl = null)
+ {
+ if (!\is_array($values) && !$values instanceof \Traversable) {
+ throw new InvalidArgumentException(sprintf('Cache values must be array or Traversable, "%s" given.', \is_object($values) ? \get_class($values) : \gettype($values)));
+ }
+
+ $saved = true;
+ $fallbackValues = [];
+
+ foreach ($values as $key => $value) {
+ if (!\is_string($key) && !\is_int($key)) {
+ throw new InvalidArgumentException(sprintf('Cache key must be string, "%s" given.', \is_object($key) ? \get_class($key) : \gettype($key)));
+ }
+
+ if (isset($this->keys[$key])) {
+ $saved = false;
+ } else {
+ $fallbackValues[$key] = $value;
+ }
+ }
+
+ if ($fallbackValues) {
+ $saved = $this->pool->setMultiple($fallbackValues, $ttl) && $saved;
+ }
+
+ return $saved;
+ }
+
+ private function generateItems(array $keys, $default): iterable
+ {
+ $fallbackKeys = [];
+
+ foreach ($keys as $key) {
+ if (isset($this->keys[$key])) {
+ $value = $this->values[$this->keys[$key]];
+
+ if ('N;' === $value) {
+ yield $key => null;
+ } elseif ($value instanceof \Closure) {
+ try {
+ yield $key => $value();
+ } catch (\Throwable $e) {
+ yield $key => $default;
+ }
+ } else {
+ yield $key => $value;
+ }
+ } else {
+ $fallbackKeys[] = $key;
+ }
+ }
+
+ if ($fallbackKeys) {
+ yield from $this->pool->getMultiple($fallbackKeys, $default);
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/PhpFilesCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/PhpFilesCache.php
new file mode 100644
index 0000000..060244a
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/PhpFilesCache.php
@@ -0,0 +1,45 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Symfony\Component\Cache\Adapter\PhpFilesAdapter;
+use Symfony\Component\Cache\Exception\CacheException;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\Traits\PhpFilesTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', PhpFilesCache::class, PhpFilesAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use PhpFilesAdapter and type-hint for CacheInterface instead.
+ */
+class PhpFilesCache extends AbstractCache implements PruneableInterface
+{
+ use PhpFilesTrait;
+
+ /**
+ * @param $appendOnly Set to `true` to gain extra performance when the items stored in this pool never expire.
+ * Doing so is encouraged because it fits perfectly OPcache's memory model.
+ *
+ * @throws CacheException if OPcache is not enabled
+ */
+ public function __construct(string $namespace = '', int $defaultLifetime = 0, string $directory = null, bool $appendOnly = false)
+ {
+ $this->appendOnly = $appendOnly;
+ self::$startTime = self::$startTime ?? $_SERVER['REQUEST_TIME'] ?? time();
+ parent::__construct('', $defaultLifetime);
+ $this->init($namespace, $directory);
+ $this->includeHandler = static function ($type, $msg, $file, $line) {
+ throw new \ErrorException($msg, 0, $type, $file, $line);
+ };
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/Psr6Cache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/Psr6Cache.php
new file mode 100644
index 0000000..090f48c
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/Psr6Cache.php
@@ -0,0 +1,23 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Symfony\Component\Cache\Psr16Cache;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" instead.', Psr6Cache::class, Psr16Cache::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use Psr16Cache instead.
+ */
+class Psr6Cache extends Psr16Cache
+{
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/RedisCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/RedisCache.php
new file mode 100644
index 0000000..9655a75
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/RedisCache.php
@@ -0,0 +1,35 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Symfony\Component\Cache\Adapter\RedisAdapter;
+use Symfony\Component\Cache\Marshaller\MarshallerInterface;
+use Symfony\Component\Cache\Traits\RedisTrait;
+use Symfony\Contracts\Cache\CacheInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', RedisCache::class, RedisAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use RedisAdapter and type-hint for CacheInterface instead.
+ */
+class RedisCache extends AbstractCache
+{
+ use RedisTrait;
+
+ /**
+ * @param \Redis|\RedisArray|\RedisCluster|\Predis\ClientInterface $redisClient
+ */
+ public function __construct($redisClient, string $namespace = '', int $defaultLifetime = 0, MarshallerInterface $marshaller = null)
+ {
+ $this->init($redisClient, $namespace, $defaultLifetime, $marshaller);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/TraceableCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/TraceableCache.php
new file mode 100644
index 0000000..2214f1c
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Simple/TraceableCache.php
@@ -0,0 +1,258 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Simple;
+
+use Psr\SimpleCache\CacheInterface as Psr16CacheInterface;
+use Symfony\Component\Cache\Adapter\TraceableAdapter;
+use Symfony\Component\Cache\PruneableInterface;
+use Symfony\Component\Cache\ResettableInterface;
+use Symfony\Contracts\Cache\CacheInterface;
+use Symfony\Contracts\Service\ResetInterface;
+
+@trigger_error(sprintf('The "%s" class is deprecated since Symfony 4.3, use "%s" and type-hint for "%s" instead.', TraceableCache::class, TraceableAdapter::class, CacheInterface::class), E_USER_DEPRECATED);
+
+/**
+ * @deprecated since Symfony 4.3, use TraceableAdapter and type-hint for CacheInterface instead.
+ */
+class TraceableCache implements Psr16CacheInterface, PruneableInterface, ResettableInterface
+{
+ private $pool;
+ private $miss;
+ private $calls = [];
+
+ public function __construct(Psr16CacheInterface $pool)
+ {
+ $this->pool = $pool;
+ $this->miss = new \stdClass();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($key, $default = null)
+ {
+ $miss = null !== $default && \is_object($default) ? $default : $this->miss;
+ $event = $this->start(__FUNCTION__);
+ try {
+ $value = $this->pool->get($key, $miss);
+ } finally {
+ $event->end = microtime(true);
+ }
+ if ($event->result[$key] = $miss !== $value) {
+ ++$event->hits;
+ } else {
+ ++$event->misses;
+ $value = $default;
+ }
+
+ return $value;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function has($key)
+ {
+ $event = $this->start(__FUNCTION__);
+ try {
+ return $event->result[$key] = $this->pool->has($key);
+ } finally {
+ $event->end = microtime(true);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function delete($key)
+ {
+ $event = $this->start(__FUNCTION__);
+ try {
+ return $event->result[$key] = $this->pool->delete($key);
+ } finally {
+ $event->end = microtime(true);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function set($key, $value, $ttl = null)
+ {
+ $event = $this->start(__FUNCTION__);
+ try {
+ return $event->result[$key] = $this->pool->set($key, $value, $ttl);
+ } finally {
+ $event->end = microtime(true);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function setMultiple($values, $ttl = null)
+ {
+ $event = $this->start(__FUNCTION__);
+ $event->result['keys'] = [];
+
+ if ($values instanceof \Traversable) {
+ $values = function () use ($values, $event) {
+ foreach ($values as $k => $v) {
+ $event->result['keys'][] = $k;
+ yield $k => $v;
+ }
+ };
+ $values = $values();
+ } elseif (\is_array($values)) {
+ $event->result['keys'] = array_keys($values);
+ }
+
+ try {
+ return $event->result['result'] = $this->pool->setMultiple($values, $ttl);
+ } finally {
+ $event->end = microtime(true);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return iterable
+ */
+ public function getMultiple($keys, $default = null)
+ {
+ $miss = null !== $default && \is_object($default) ? $default : $this->miss;
+ $event = $this->start(__FUNCTION__);
+ try {
+ $result = $this->pool->getMultiple($keys, $miss);
+ } finally {
+ $event->end = microtime(true);
+ }
+ $f = function () use ($result, $event, $miss, $default) {
+ $event->result = [];
+ foreach ($result as $key => $value) {
+ if ($event->result[$key] = $miss !== $value) {
+ ++$event->hits;
+ } else {
+ ++$event->misses;
+ $value = $default;
+ }
+ yield $key => $value;
+ }
+ };
+
+ return $f();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function clear()
+ {
+ $event = $this->start(__FUNCTION__);
+ try {
+ return $event->result = $this->pool->clear();
+ } finally {
+ $event->end = microtime(true);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteMultiple($keys)
+ {
+ $event = $this->start(__FUNCTION__);
+ if ($keys instanceof \Traversable) {
+ $keys = $event->result['keys'] = iterator_to_array($keys, false);
+ } else {
+ $event->result['keys'] = $keys;
+ }
+ try {
+ return $event->result['result'] = $this->pool->deleteMultiple($keys);
+ } finally {
+ $event->end = microtime(true);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function prune()
+ {
+ if (!$this->pool instanceof PruneableInterface) {
+ return false;
+ }
+ $event = $this->start(__FUNCTION__);
+ try {
+ return $event->result = $this->pool->prune();
+ } finally {
+ $event->end = microtime(true);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function reset()
+ {
+ if (!$this->pool instanceof ResetInterface) {
+ return;
+ }
+ $event = $this->start(__FUNCTION__);
+ try {
+ $this->pool->reset();
+ } finally {
+ $event->end = microtime(true);
+ }
+ }
+
+ public function getCalls()
+ {
+ try {
+ return $this->calls;
+ } finally {
+ $this->calls = [];
+ }
+ }
+
+ private function start(string $name): TraceableCacheEvent
+ {
+ $this->calls[] = $event = new TraceableCacheEvent();
+ $event->name = $name;
+ $event->start = microtime(true);
+
+ return $event;
+ }
+}
+
+class TraceableCacheEvent
+{
+ public $name;
+ public $start;
+ public $end;
+ public $result;
+ public $hits = 0;
+ public $misses = 0;
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Traits/AbstractAdapterTrait.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Traits/AbstractAdapterTrait.php
new file mode 100644
index 0000000..8bf9354
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Traits/AbstractAdapterTrait.php
@@ -0,0 +1,155 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits;
+
+use Psr\Cache\CacheItemInterface;
+use Symfony\Component\Cache\CacheItem;
+
+/**
+ * @author Nicolas Grekas
+ *
+ * @internal
+ */
+trait AbstractAdapterTrait
+{
+ use AbstractTrait;
+
+ /**
+ * @var \Closure needs to be set by class, signature is function(string , mixed , bool )
+ */
+ private $createCacheItem;
+
+ /**
+ * @var \Closure needs to be set by class, signature is function(array , string , array <&expiredIds>)
+ */
+ private $mergeByLifetime;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItem($key)
+ {
+ if ($this->deferred) {
+ $this->commit();
+ }
+ $id = $this->getId($key);
+
+ $f = $this->createCacheItem;
+ $isHit = false;
+ $value = null;
+
+ try {
+ foreach ($this->doFetch([$id]) as $value) {
+ $isHit = true;
+ }
+
+ return $f($key, $value, $isHit);
+ } catch (\Exception $e) {
+ CacheItem::log($this->logger, 'Failed to fetch key "{key}": '.$e->getMessage(), ['key' => $key, 'exception' => $e]);
+ }
+
+ return $f($key, null, false);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItems(array $keys = [])
+ {
+ if ($this->deferred) {
+ $this->commit();
+ }
+ $ids = [];
+
+ foreach ($keys as $key) {
+ $ids[] = $this->getId($key);
+ }
+ try {
+ $items = $this->doFetch($ids);
+ } catch (\Exception $e) {
+ CacheItem::log($this->logger, 'Failed to fetch items: '.$e->getMessage(), ['keys' => $keys, 'exception' => $e]);
+ $items = [];
+ }
+ $ids = array_combine($ids, $keys);
+
+ return $this->generateItems($items, $ids);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function save(CacheItemInterface $item)
+ {
+ if (!$item instanceof CacheItem) {
+ return false;
+ }
+ $this->deferred[$item->getKey()] = $item;
+
+ return $this->commit();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function saveDeferred(CacheItemInterface $item)
+ {
+ if (!$item instanceof CacheItem) {
+ return false;
+ }
+ $this->deferred[$item->getKey()] = $item;
+
+ return true;
+ }
+
+ public function __sleep()
+ {
+ throw new \BadMethodCallException('Cannot serialize '.__CLASS__);
+ }
+
+ public function __wakeup()
+ {
+ throw new \BadMethodCallException('Cannot unserialize '.__CLASS__);
+ }
+
+ public function __destruct()
+ {
+ if ($this->deferred) {
+ $this->commit();
+ }
+ }
+
+ private function generateItems(iterable $items, array &$keys): iterable
+ {
+ $f = $this->createCacheItem;
+
+ try {
+ foreach ($items as $id => $value) {
+ if (!isset($keys[$id])) {
+ $id = key($keys);
+ }
+ $key = $keys[$id];
+ unset($keys[$id]);
+ yield $key => $f($key, $value, true);
+ }
+ } catch (\Exception $e) {
+ CacheItem::log($this->logger, 'Failed to fetch items: '.$e->getMessage(), ['keys' => array_values($keys), 'exception' => $e]);
+ }
+
+ foreach ($keys as $key) {
+ yield $key => $f($key, null, false);
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Traits/AbstractTrait.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Traits/AbstractTrait.php
new file mode 100644
index 0000000..5876c1c
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Traits/AbstractTrait.php
@@ -0,0 +1,303 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits;
+
+use Psr\Log\LoggerAwareTrait;
+use Symfony\Component\Cache\CacheItem;
+
+/**
+ * @author Nicolas Grekas
+ *
+ * @internal
+ */
+trait AbstractTrait
+{
+ use LoggerAwareTrait;
+
+ private $namespace;
+ private $namespaceVersion = '';
+ private $versioningIsEnabled = false;
+ private $deferred = [];
+ private $ids = [];
+
+ /**
+ * @var int|null The maximum length to enforce for identifiers or null when no limit applies
+ */
+ protected $maxIdLength;
+
+ /**
+ * Fetches several cache items.
+ *
+ * @param array $ids The cache identifiers to fetch
+ *
+ * @return array|\Traversable The corresponding values found in the cache
+ */
+ abstract protected function doFetch(array $ids);
+
+ /**
+ * Confirms if the cache contains specified cache item.
+ *
+ * @param string $id The identifier for which to check existence
+ *
+ * @return bool True if item exists in the cache, false otherwise
+ */
+ abstract protected function doHave($id);
+
+ /**
+ * Deletes all items in the pool.
+ *
+ * @param string $namespace The prefix used for all identifiers managed by this pool
+ *
+ * @return bool True if the pool was successfully cleared, false otherwise
+ */
+ abstract protected function doClear($namespace);
+
+ /**
+ * Removes multiple items from the pool.
+ *
+ * @param array $ids An array of identifiers that should be removed from the pool
+ *
+ * @return bool True if the items were successfully removed, false otherwise
+ */
+ abstract protected function doDelete(array $ids);
+
+ /**
+ * Persists several cache items immediately.
+ *
+ * @param array $values The values to cache, indexed by their cache identifier
+ * @param int $lifetime The lifetime of the cached values, 0 for persisting until manual cleaning
+ *
+ * @return array|bool The identifiers that failed to be cached or a boolean stating if caching succeeded or not
+ */
+ abstract protected function doSave(array $values, $lifetime);
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function hasItem($key)
+ {
+ $id = $this->getId($key);
+
+ if (isset($this->deferred[$key])) {
+ $this->commit();
+ }
+
+ try {
+ return $this->doHave($id);
+ } catch (\Exception $e) {
+ CacheItem::log($this->logger, 'Failed to check if key "{key}" is cached: '.$e->getMessage(), ['key' => $key, 'exception' => $e]);
+
+ return false;
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param string $prefix
+ *
+ * @return bool
+ */
+ public function clear(/*string $prefix = ''*/)
+ {
+ $this->deferred = [];
+ if ($cleared = $this->versioningIsEnabled) {
+ if ('' === $namespaceVersionToClear = $this->namespaceVersion) {
+ foreach ($this->doFetch([static::NS_SEPARATOR.$this->namespace]) as $v) {
+ $namespaceVersionToClear = $v;
+ }
+ }
+ $namespaceToClear = $this->namespace.$namespaceVersionToClear;
+ $namespaceVersion = substr_replace(base64_encode(pack('V', mt_rand())), static::NS_SEPARATOR, 5);
+ try {
+ $cleared = $this->doSave([static::NS_SEPARATOR.$this->namespace => $namespaceVersion], 0);
+ } catch (\Exception $e) {
+ $cleared = false;
+ }
+ if ($cleared = true === $cleared || [] === $cleared) {
+ $this->namespaceVersion = $namespaceVersion;
+ $this->ids = [];
+ }
+ } else {
+ $prefix = 0 < \func_num_args() ? (string) func_get_arg(0) : '';
+ $namespaceToClear = $this->namespace.$prefix;
+ }
+
+ try {
+ return $this->doClear($namespaceToClear) || $cleared;
+ } catch (\Exception $e) {
+ CacheItem::log($this->logger, 'Failed to clear the cache: '.$e->getMessage(), ['exception' => $e]);
+
+ return false;
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItem($key)
+ {
+ return $this->deleteItems([$key]);
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function deleteItems(array $keys)
+ {
+ $ids = [];
+
+ foreach ($keys as $key) {
+ $ids[$key] = $this->getId($key);
+ unset($this->deferred[$key]);
+ }
+
+ try {
+ if ($this->doDelete($ids)) {
+ return true;
+ }
+ } catch (\Exception $e) {
+ }
+
+ $ok = true;
+
+ // When bulk-delete failed, retry each item individually
+ foreach ($ids as $key => $id) {
+ try {
+ $e = null;
+ if ($this->doDelete([$id])) {
+ continue;
+ }
+ } catch (\Exception $e) {
+ }
+ $message = 'Failed to delete key "{key}"'.($e instanceof \Exception ? ': '.$e->getMessage() : '.');
+ CacheItem::log($this->logger, $message, ['key' => $key, 'exception' => $e]);
+ $ok = false;
+ }
+
+ return $ok;
+ }
+
+ /**
+ * Enables/disables versioning of items.
+ *
+ * When versioning is enabled, clearing the cache is atomic and doesn't require listing existing keys to proceed,
+ * but old keys may need garbage collection and extra round-trips to the back-end are required.
+ *
+ * Calling this method also clears the memoized namespace version and thus forces a resynchonization of it.
+ *
+ * @param bool $enable
+ *
+ * @return bool the previous state of versioning
+ */
+ public function enableVersioning($enable = true)
+ {
+ $wasEnabled = $this->versioningIsEnabled;
+ $this->versioningIsEnabled = (bool) $enable;
+ $this->namespaceVersion = '';
+ $this->ids = [];
+
+ return $wasEnabled;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function reset()
+ {
+ if ($this->deferred) {
+ $this->commit();
+ }
+ $this->namespaceVersion = '';
+ $this->ids = [];
+ }
+
+ /**
+ * Like the native unserialize() function but throws an exception if anything goes wrong.
+ *
+ * @param string $value
+ *
+ * @return mixed
+ *
+ * @throws \Exception
+ *
+ * @deprecated since Symfony 4.2, use DefaultMarshaller instead.
+ */
+ protected static function unserialize($value)
+ {
+ @trigger_error(sprintf('The "%s::unserialize()" method is deprecated since Symfony 4.2, use DefaultMarshaller instead.', __CLASS__), E_USER_DEPRECATED);
+
+ if ('b:0;' === $value) {
+ return false;
+ }
+ $unserializeCallbackHandler = ini_set('unserialize_callback_func', __CLASS__.'::handleUnserializeCallback');
+ try {
+ if (false !== $value = unserialize($value)) {
+ return $value;
+ }
+ throw new \DomainException('Failed to unserialize cached value.');
+ } catch (\Error $e) {
+ throw new \ErrorException($e->getMessage(), $e->getCode(), E_ERROR, $e->getFile(), $e->getLine());
+ } finally {
+ ini_set('unserialize_callback_func', $unserializeCallbackHandler);
+ }
+ }
+
+ private function getId($key): string
+ {
+ if ($this->versioningIsEnabled && '' === $this->namespaceVersion) {
+ $this->ids = [];
+ $this->namespaceVersion = '1'.static::NS_SEPARATOR;
+ try {
+ foreach ($this->doFetch([static::NS_SEPARATOR.$this->namespace]) as $v) {
+ $this->namespaceVersion = $v;
+ }
+ if ('1'.static::NS_SEPARATOR === $this->namespaceVersion) {
+ $this->namespaceVersion = substr_replace(base64_encode(pack('V', time())), static::NS_SEPARATOR, 5);
+ $this->doSave([static::NS_SEPARATOR.$this->namespace => $this->namespaceVersion], 0);
+ }
+ } catch (\Exception $e) {
+ }
+ }
+
+ if (\is_string($key) && isset($this->ids[$key])) {
+ return $this->namespace.$this->namespaceVersion.$this->ids[$key];
+ }
+ CacheItem::validateKey($key);
+ $this->ids[$key] = $key;
+
+ if (null === $this->maxIdLength) {
+ return $this->namespace.$this->namespaceVersion.$key;
+ }
+ if (\strlen($id = $this->namespace.$this->namespaceVersion.$key) > $this->maxIdLength) {
+ // Use MD5 to favor speed over security, which is not an issue here
+ $this->ids[$key] = $id = substr_replace(base64_encode(hash('md5', $key, true)), static::NS_SEPARATOR, -(\strlen($this->namespaceVersion) + 2));
+ $id = $this->namespace.$this->namespaceVersion.$id;
+ }
+
+ return $id;
+ }
+
+ /**
+ * @internal
+ */
+ public static function handleUnserializeCallback($class)
+ {
+ throw new \DomainException('Class not found: '.$class);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Traits/ApcuTrait.php b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Traits/ApcuTrait.php
new file mode 100644
index 0000000..f681c05
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/Traits/ApcuTrait.php
@@ -0,0 +1,121 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Cache\Traits;
+
+use Symfony\Component\Cache\CacheItem;
+use Symfony\Component\Cache\Exception\CacheException;
+
+/**
+ * @author Nicolas Grekas
+ *
+ * @internal
+ */
+trait RedisTrait
+{
+ private static $defaultConnectionOptions = [
+ 'class' => null,
+ 'persistent' => 0,
+ 'persistent_id' => null,
+ 'timeout' => 30,
+ 'read_timeout' => 0,
+ 'retry_interval' => 0,
+ 'tcp_keepalive' => 0,
+ 'lazy' => null,
+ 'redis_cluster' => false,
+ 'redis_sentinel' => null,
+ 'dbindex' => 0,
+ 'failover' => 'none',
+ ];
+ private $redis;
+ private $marshaller;
+
+ /**
+ * @param \Redis|\RedisArray|\RedisCluster|\Predis\ClientInterface $redisClient
+ */
+ private function init($redisClient, string $namespace, int $defaultLifetime, ?MarshallerInterface $marshaller)
+ {
+ parent::__construct($namespace, $defaultLifetime);
+
+ if (preg_match('#[^-+_.A-Za-z0-9]#', $namespace, $match)) {
+ throw new InvalidArgumentException(sprintf('RedisAdapter namespace contains "%s" but only characters in [-+_.A-Za-z0-9] are allowed.', $match[0]));
+ }
+
+ if (!$redisClient instanceof \Redis && !$redisClient instanceof \RedisArray && !$redisClient instanceof \RedisCluster && !$redisClient instanceof \Predis\ClientInterface && !$redisClient instanceof RedisProxy && !$redisClient instanceof RedisClusterProxy) {
+ throw new InvalidArgumentException(sprintf('"%s()" expects parameter 1 to be Redis, RedisArray, RedisCluster or Predis\ClientInterface, "%s" given.', __METHOD__, \is_object($redisClient) ? \get_class($redisClient) : \gettype($redisClient)));
+ }
+
+ if ($redisClient instanceof \Predis\ClientInterface && $redisClient->getOptions()->exceptions) {
+ $options = clone $redisClient->getOptions();
+ \Closure::bind(function () { $this->options['exceptions'] = false; }, $options, $options)();
+ $redisClient = new $redisClient($redisClient->getConnection(), $options);
+ }
+
+ $this->redis = $redisClient;
+ $this->marshaller = $marshaller ?? new DefaultMarshaller();
+ }
+
+ /**
+ * Creates a Redis connection using a DSN configuration.
+ *
+ * Example DSN:
+ * - redis://localhost
+ * - redis://example.com:1234
+ * - redis://secret@example.com/13
+ * - redis:///var/run/redis.sock
+ * - redis://secret@/var/run/redis.sock/13
+ *
+ * @param string $dsn
+ * @param array $options See self::$defaultConnectionOptions
+ *
+ * @throws InvalidArgumentException when the DSN is invalid
+ *
+ * @return \Redis|\RedisCluster|\Predis\ClientInterface According to the "class" option
+ */
+ public static function createConnection($dsn, array $options = [])
+ {
+ if (0 === strpos($dsn, 'redis:')) {
+ $scheme = 'redis';
+ } elseif (0 === strpos($dsn, 'rediss:')) {
+ $scheme = 'rediss';
+ } else {
+ throw new InvalidArgumentException(sprintf('Invalid Redis DSN: "%s" does not start with "redis:" or "rediss".', $dsn));
+ }
+
+ if (!\extension_loaded('redis') && !class_exists(\Predis\Client::class)) {
+ throw new CacheException(sprintf('Cannot find the "redis" extension nor the "predis/predis" package: "%s".', $dsn));
+ }
+
+ $params = preg_replace_callback('#^'.$scheme.':(//)?(?:(?:[^:@]*+:)?([^@]*+)@)?#', function ($m) use (&$auth) {
+ if (isset($m[2])) {
+ $auth = $m[2];
+ }
+
+ return 'file:'.($m[1] ?? '');
+ }, $dsn);
+
+ if (false === $params = parse_url($params)) {
+ throw new InvalidArgumentException(sprintf('Invalid Redis DSN: "%s".', $dsn));
+ }
+
+ $query = $hosts = [];
+
+ if (isset($params['query'])) {
+ parse_str($params['query'], $query);
+
+ if (isset($query['host'])) {
+ if (!\is_array($hosts = $query['host'])) {
+ throw new InvalidArgumentException(sprintf('Invalid Redis DSN: "%s".', $dsn));
+ }
+ foreach ($hosts as $host => $parameters) {
+ if (\is_string($parameters)) {
+ parse_str($parameters, $parameters);
+ }
+ if (false === $i = strrpos($host, ':')) {
+ $hosts[$host] = ['scheme' => 'tcp', 'host' => $host, 'port' => 6379] + $parameters;
+ } elseif ($port = (int) substr($host, 1 + $i)) {
+ $hosts[$host] = ['scheme' => 'tcp', 'host' => substr($host, 0, $i), 'port' => $port] + $parameters;
+ } else {
+ $hosts[$host] = ['scheme' => 'unix', 'path' => substr($host, 0, $i)] + $parameters;
+ }
+ }
+ $hosts = array_values($hosts);
+ }
+ }
+
+ if (isset($params['host']) || isset($params['path'])) {
+ if (!isset($params['dbindex']) && isset($params['path']) && preg_match('#/(\d+)$#', $params['path'], $m)) {
+ $params['dbindex'] = $m[1];
+ $params['path'] = substr($params['path'], 0, -\strlen($m[0]));
+ }
+
+ if (isset($params['host'])) {
+ array_unshift($hosts, ['scheme' => 'tcp', 'host' => $params['host'], 'port' => $params['port'] ?? 6379]);
+ } else {
+ array_unshift($hosts, ['scheme' => 'unix', 'path' => $params['path']]);
+ }
+ }
+
+ if (!$hosts) {
+ throw new InvalidArgumentException(sprintf('Invalid Redis DSN: "%s".', $dsn));
+ }
+
+ if (isset($params['redis_sentinel']) && !class_exists(\Predis\Client::class)) {
+ throw new CacheException(sprintf('Redis Sentinel support requires the "predis/predis" package: "%s".', $dsn));
+ }
+
+ $params += $query + $options + self::$defaultConnectionOptions;
+
+ if (null === $params['class'] && !isset($params['redis_sentinel']) && \extension_loaded('redis')) {
+ $class = $params['redis_cluster'] ? \RedisCluster::class : (1 < \count($hosts) ? \RedisArray::class : \Redis::class);
+ } else {
+ $class = null === $params['class'] ? \Predis\Client::class : $params['class'];
+ }
+
+ if (is_a($class, \Redis::class, true)) {
+ $connect = $params['persistent'] || $params['persistent_id'] ? 'pconnect' : 'connect';
+ $redis = new $class();
+
+ $initializer = function ($redis) use ($connect, $params, $dsn, $auth, $hosts) {
+ try {
+ @$redis->{$connect}($hosts[0]['host'] ?? $hosts[0]['path'], $hosts[0]['port'] ?? null, $params['timeout'], (string) $params['persistent_id'], $params['retry_interval']);
+ } catch (\RedisException $e) {
+ throw new InvalidArgumentException(sprintf('Redis connection failed (%s): "%s".', $e->getMessage(), $dsn));
+ }
+
+ set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; });
+ $isConnected = $redis->isConnected();
+ restore_error_handler();
+ if (!$isConnected) {
+ $error = preg_match('/^Redis::p?connect\(\): (.*)/', $error, $error) ? sprintf(' (%s)', $error[1]) : '';
+ throw new InvalidArgumentException(sprintf('Redis connection failed%s: "%s".', $error, $dsn));
+ }
+
+ if ((null !== $auth && !$redis->auth($auth))
+ || ($params['dbindex'] && !$redis->select($params['dbindex']))
+ || ($params['read_timeout'] && !$redis->setOption(\Redis::OPT_READ_TIMEOUT, $params['read_timeout']))
+ ) {
+ $e = preg_replace('/^ERR /', '', $redis->getLastError());
+ throw new InvalidArgumentException(sprintf('Redis connection failed (%s): "%s".', $e, $dsn));
+ }
+
+ if (0 < $params['tcp_keepalive'] && \defined('Redis::OPT_TCP_KEEPALIVE')) {
+ $redis->setOption(\Redis::OPT_TCP_KEEPALIVE, $params['tcp_keepalive']);
+ }
+
+ return true;
+ };
+
+ if ($params['lazy']) {
+ $redis = new RedisProxy($redis, $initializer);
+ } else {
+ $initializer($redis);
+ }
+ } elseif (is_a($class, \RedisArray::class, true)) {
+ foreach ($hosts as $i => $host) {
+ $hosts[$i] = 'tcp' === $host['scheme'] ? $host['host'].':'.$host['port'] : $host['path'];
+ }
+ $params['lazy_connect'] = $params['lazy'] ?? true;
+ $params['connect_timeout'] = $params['timeout'];
+
+ try {
+ $redis = new $class($hosts, $params);
+ } catch (\RedisClusterException $e) {
+ throw new InvalidArgumentException(sprintf('Redis connection failed (%s): "%s".', $e->getMessage(), $dsn));
+ }
+
+ if (0 < $params['tcp_keepalive'] && \defined('Redis::OPT_TCP_KEEPALIVE')) {
+ $redis->setOption(\Redis::OPT_TCP_KEEPALIVE, $params['tcp_keepalive']);
+ }
+ } elseif (is_a($class, \RedisCluster::class, true)) {
+ $initializer = function () use ($class, $params, $dsn, $hosts) {
+ foreach ($hosts as $i => $host) {
+ $hosts[$i] = 'tcp' === $host['scheme'] ? $host['host'].':'.$host['port'] : $host['path'];
+ }
+
+ try {
+ $redis = new $class(null, $hosts, $params['timeout'], $params['read_timeout'], (bool) $params['persistent']);
+ } catch (\RedisClusterException $e) {
+ throw new InvalidArgumentException(sprintf('Redis connection failed (%s): "%s".', $e->getMessage(), $dsn));
+ }
+
+ if (0 < $params['tcp_keepalive'] && \defined('Redis::OPT_TCP_KEEPALIVE')) {
+ $redis->setOption(\Redis::OPT_TCP_KEEPALIVE, $params['tcp_keepalive']);
+ }
+ switch ($params['failover']) {
+ case 'error': $redis->setOption(\RedisCluster::OPT_SLAVE_FAILOVER, \RedisCluster::FAILOVER_ERROR); break;
+ case 'distribute': $redis->setOption(\RedisCluster::OPT_SLAVE_FAILOVER, \RedisCluster::FAILOVER_DISTRIBUTE); break;
+ case 'slaves': $redis->setOption(\RedisCluster::OPT_SLAVE_FAILOVER, \RedisCluster::FAILOVER_DISTRIBUTE_SLAVES); break;
+ }
+
+ return $redis;
+ };
+
+ $redis = $params['lazy'] ? new RedisClusterProxy($initializer) : $initializer();
+ } elseif (is_a($class, \Predis\ClientInterface::class, true)) {
+ if ($params['redis_cluster']) {
+ $params['cluster'] = 'redis';
+ if (isset($params['redis_sentinel'])) {
+ throw new InvalidArgumentException(sprintf('Cannot use both "redis_cluster" and "redis_sentinel" at the same time: "%s".', $dsn));
+ }
+ } elseif (isset($params['redis_sentinel'])) {
+ $params['replication'] = 'sentinel';
+ $params['service'] = $params['redis_sentinel'];
+ }
+ $params += ['parameters' => []];
+ $params['parameters'] += [
+ 'persistent' => $params['persistent'],
+ 'timeout' => $params['timeout'],
+ 'read_write_timeout' => $params['read_timeout'],
+ 'tcp_nodelay' => true,
+ ];
+ if ($params['dbindex']) {
+ $params['parameters']['database'] = $params['dbindex'];
+ }
+ if (null !== $auth) {
+ $params['parameters']['password'] = $auth;
+ }
+ if (1 === \count($hosts) && !($params['redis_cluster'] || $params['redis_sentinel'])) {
+ $hosts = $hosts[0];
+ } elseif (\in_array($params['failover'], ['slaves', 'distribute'], true) && !isset($params['replication'])) {
+ $params['replication'] = true;
+ $hosts[0] += ['alias' => 'master'];
+ }
+ $params['exceptions'] = false;
+
+ $redis = new $class($hosts, array_diff_key($params, self::$defaultConnectionOptions));
+ if (isset($params['redis_sentinel'])) {
+ $redis->getConnection()->setSentinelTimeout($params['timeout']);
+ }
+ } elseif (class_exists($class, false)) {
+ throw new InvalidArgumentException(sprintf('"%s" is not a subclass of "Redis", "RedisArray", "RedisCluster" nor "Predis\ClientInterface".', $class));
+ } else {
+ throw new InvalidArgumentException(sprintf('Class "%s" does not exist.', $class));
+ }
+
+ return $redis;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch(array $ids)
+ {
+ if (!$ids) {
+ return [];
+ }
+
+ $result = [];
+
+ if ($this->redis instanceof \Predis\ClientInterface && $this->redis->getConnection() instanceof ClusterInterface) {
+ $values = $this->pipeline(function () use ($ids) {
+ foreach ($ids as $id) {
+ yield 'get' => [$id];
+ }
+ });
+ } else {
+ $values = $this->redis->mget($ids);
+
+ if (!\is_array($values) || \count($values) !== \count($ids)) {
+ return [];
+ }
+
+ $values = array_combine($ids, $values);
+ }
+
+ foreach ($values as $id => $v) {
+ if ($v) {
+ $result[$id] = $this->marshaller->unmarshall($v);
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doHave($id)
+ {
+ return (bool) $this->redis->exists($id);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doClear($namespace)
+ {
+ $cleared = true;
+ if ($this->redis instanceof \Predis\ClientInterface) {
+ $evalArgs = [0, $namespace];
+ } else {
+ $evalArgs = [[$namespace], 0];
+ }
+
+ foreach ($this->getHosts() as $host) {
+ if (!isset($namespace[0])) {
+ $cleared = $host->flushDb() && $cleared;
+ continue;
+ }
+
+ $info = $host->info('Server');
+ $info = isset($info['Server']) ? $info['Server'] : $info;
+
+ if (!version_compare($info['redis_version'], '2.8', '>=')) {
+ // As documented in Redis documentation (http://redis.io/commands/keys) using KEYS
+ // can hang your server when it is executed against large databases (millions of items).
+ // Whenever you hit this scale, you should really consider upgrading to Redis 2.8 or above.
+ $cleared = $host->eval("local keys=redis.call('KEYS',ARGV[1]..'*') for i=1,#keys,5000 do redis.call('DEL',unpack(keys,i,math.min(i+4999,#keys))) end return 1", $evalArgs[0], $evalArgs[1]) && $cleared;
+ continue;
+ }
+
+ $cursor = null;
+ do {
+ $keys = $host instanceof \Predis\ClientInterface ? $host->scan($cursor, 'MATCH', $namespace.'*', 'COUNT', 1000) : $host->scan($cursor, $namespace.'*', 1000);
+ if (isset($keys[1]) && \is_array($keys[1])) {
+ $cursor = $keys[0];
+ $keys = $keys[1];
+ }
+ if ($keys) {
+ $this->doDelete($keys);
+ }
+ } while ($cursor = (int) $cursor);
+ }
+
+ return $cleared;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete(array $ids)
+ {
+ if (!$ids) {
+ return true;
+ }
+
+ if ($this->redis instanceof \Predis\ClientInterface && $this->redis->getConnection() instanceof ClusterInterface) {
+ $this->pipeline(function () use ($ids) {
+ foreach ($ids as $id) {
+ yield 'del' => [$id];
+ }
+ })->rewind();
+ } else {
+ $this->redis->del($ids);
+ }
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave(array $values, $lifetime)
+ {
+ if (!$values = $this->marshaller->marshall($values, $failed)) {
+ return $failed;
+ }
+
+ $results = $this->pipeline(function () use ($values, $lifetime) {
+ foreach ($values as $id => $value) {
+ if (0 >= $lifetime) {
+ yield 'set' => [$id, $value];
+ } else {
+ yield 'setEx' => [$id, $lifetime, $value];
+ }
+ }
+ });
+
+ foreach ($results as $id => $result) {
+ if (true !== $result && (!$result instanceof Status || Status::get('OK') !== $result)) {
+ $failed[] = $id;
+ }
+ }
+
+ return $failed;
+ }
+
+ private function pipeline(\Closure $generator, $redis = null): \Generator
+ {
+ $ids = [];
+ $redis = $redis ?? $this->redis;
+
+ if ($redis instanceof RedisClusterProxy || $redis instanceof \RedisCluster || ($redis instanceof \Predis\ClientInterface && $redis->getConnection() instanceof RedisCluster)) {
+ // phpredis & predis don't support pipelining with RedisCluster
+ // see https://github.com/phpredis/phpredis/blob/develop/cluster.markdown#pipelining
+ // see https://github.com/nrk/predis/issues/267#issuecomment-123781423
+ $results = [];
+ foreach ($generator() as $command => $args) {
+ $results[] = $redis->{$command}(...$args);
+ $ids[] = 'eval' === $command ? ($redis instanceof \Predis\ClientInterface ? $args[2] : $args[1][0]) : $args[0];
+ }
+ } elseif ($redis instanceof \Predis\ClientInterface) {
+ $results = $redis->pipeline(static function ($redis) use ($generator, &$ids) {
+ foreach ($generator() as $command => $args) {
+ $redis->{$command}(...$args);
+ $ids[] = 'eval' === $command ? $args[2] : $args[0];
+ }
+ });
+ } elseif ($redis instanceof \RedisArray) {
+ $connections = $results = $ids = [];
+ foreach ($generator() as $command => $args) {
+ $id = 'eval' === $command ? $args[1][0] : $args[0];
+ if (!isset($connections[$h = $redis->_target($id)])) {
+ $connections[$h] = [$redis->_instance($h), -1];
+ $connections[$h][0]->multi(\Redis::PIPELINE);
+ }
+ $connections[$h][0]->{$command}(...$args);
+ $results[] = [$h, ++$connections[$h][1]];
+ $ids[] = $id;
+ }
+ foreach ($connections as $h => $c) {
+ $connections[$h] = $c[0]->exec();
+ }
+ foreach ($results as $k => list($h, $c)) {
+ $results[$k] = $connections[$h][$c];
+ }
+ } else {
+ $redis->multi(\Redis::PIPELINE);
+ foreach ($generator() as $command => $args) {
+ $redis->{$command}(...$args);
+ $ids[] = 'eval' === $command ? $args[1][0] : $args[0];
+ }
+ $results = $redis->exec();
+ }
+
+ foreach ($ids as $k => $id) {
+ yield $id => $results[$k];
+ }
+ }
+
+ private function getHosts(): array
+ {
+ $hosts = [$this->redis];
+ if ($this->redis instanceof \Predis\ClientInterface) {
+ $connection = $this->redis->getConnection();
+ if ($connection instanceof ClusterInterface && $connection instanceof \Traversable) {
+ $hosts = [];
+ foreach ($connection as $c) {
+ $hosts[] = new \Predis\Client($c);
+ }
+ }
+ } elseif ($this->redis instanceof \RedisArray) {
+ $hosts = [];
+ foreach ($this->redis->_hosts() as $host) {
+ $hosts[] = $this->redis->_instance($host);
+ }
+ } elseif ($this->redis instanceof RedisClusterProxy || $this->redis instanceof \RedisCluster) {
+ $hosts = [];
+ foreach ($this->redis->_masters() as $host) {
+ $hosts[] = $h = new \Redis();
+ $h->connect($host[0], $host[1]);
+ }
+ }
+
+ return $hosts;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/cache/composer.json b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/composer.json
new file mode 100644
index 0000000..0f0033c
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/cache/composer.json
@@ -0,0 +1,59 @@
+{
+ "name": "symfony/cache",
+ "type": "library",
+ "description": "Symfony Cache component with PSR-6, PSR-16, and tags",
+ "keywords": ["caching", "psr6"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "provide": {
+ "psr/cache-implementation": "1.0",
+ "psr/simple-cache-implementation": "1.0",
+ "symfony/cache-implementation": "1.0"
+ },
+ "require": {
+ "php": "^7.1.3",
+ "psr/cache": "~1.0",
+ "psr/log": "~1.0",
+ "symfony/cache-contracts": "^1.1.7|^2",
+ "symfony/service-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.2|^5.0"
+ },
+ "require-dev": {
+ "cache/integration-tests": "dev-master",
+ "doctrine/cache": "~1.6",
+ "doctrine/dbal": "~2.5",
+ "predis/predis": "~1.1",
+ "psr/simple-cache": "^1.0",
+ "symfony/config": "^4.2|^5.0",
+ "symfony/dependency-injection": "^3.4|^4.1|^5.0",
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "conflict": {
+ "doctrine/dbal": "<2.5",
+ "symfony/dependency-injection": "<3.4",
+ "symfony/http-kernel": "<4.4",
+ "symfony/var-dumper": "<4.4"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Component\\Cache\\": "" },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/.gitignore b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/.gitignore
new file mode 100644
index 0000000..c49a5d8
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/.gitignore
@@ -0,0 +1,3 @@
+vendor/
+composer.lock
+phpunit.xml
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/CHANGELOG.md b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/CHANGELOG.md
new file mode 100644
index 0000000..d00d17c
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/CHANGELOG.md
@@ -0,0 +1,12 @@
+CHANGELOG
+=========
+
+2.6.0
+-----
+
+ * Added ExpressionFunction and ExpressionFunctionProviderInterface
+
+2.4.0
+-----
+
+ * added the component
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Compiler.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Compiler.php
new file mode 100644
index 0000000..282e82d
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Compiler.php
@@ -0,0 +1,146 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+/**
+ * Compiles a node to PHP code.
+ *
+ * @author Fabien Potencier
+ */
+class Compiler
+{
+ private $source;
+ private $functions;
+
+ public function __construct(array $functions)
+ {
+ $this->functions = $functions;
+ }
+
+ public function getFunction($name)
+ {
+ return $this->functions[$name];
+ }
+
+ /**
+ * Gets the current PHP code after compilation.
+ *
+ * @return string The PHP code
+ */
+ public function getSource()
+ {
+ return $this->source;
+ }
+
+ public function reset()
+ {
+ $this->source = '';
+
+ return $this;
+ }
+
+ /**
+ * Compiles a node.
+ *
+ * @return $this
+ */
+ public function compile(Node\Node $node)
+ {
+ $node->compile($this);
+
+ return $this;
+ }
+
+ public function subcompile(Node\Node $node)
+ {
+ $current = $this->source;
+ $this->source = '';
+
+ $node->compile($this);
+
+ $source = $this->source;
+ $this->source = $current;
+
+ return $source;
+ }
+
+ /**
+ * Adds a raw string to the compiled code.
+ *
+ * @param string $string The string
+ *
+ * @return $this
+ */
+ public function raw($string)
+ {
+ $this->source .= $string;
+
+ return $this;
+ }
+
+ /**
+ * Adds a quoted string to the compiled code.
+ *
+ * @param string $value The string
+ *
+ * @return $this
+ */
+ public function string($value)
+ {
+ $this->source .= sprintf('"%s"', addcslashes($value, "\0\t\"\$\\"));
+
+ return $this;
+ }
+
+ /**
+ * Returns a PHP representation of a given value.
+ *
+ * @param mixed $value The value to convert
+ *
+ * @return $this
+ */
+ public function repr($value)
+ {
+ if (\is_int($value) || \is_float($value)) {
+ if (false !== $locale = setlocale(LC_NUMERIC, 0)) {
+ setlocale(LC_NUMERIC, 'C');
+ }
+
+ $this->raw($value);
+
+ if (false !== $locale) {
+ setlocale(LC_NUMERIC, $locale);
+ }
+ } elseif (null === $value) {
+ $this->raw('null');
+ } elseif (\is_bool($value)) {
+ $this->raw($value ? 'true' : 'false');
+ } elseif (\is_array($value)) {
+ $this->raw('[');
+ $first = true;
+ foreach ($value as $key => $value) {
+ if (!$first) {
+ $this->raw(', ');
+ }
+ $first = false;
+ $this->repr($key);
+ $this->raw(' => ');
+ $this->repr($value);
+ }
+ $this->raw(']');
+ } else {
+ $this->string($value);
+ }
+
+ return $this;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Expression.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Expression.php
new file mode 100644
index 0000000..ac656cc
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Expression.php
@@ -0,0 +1,40 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+/**
+ * Represents an expression.
+ *
+ * @author Fabien Potencier
+ */
+class Expression
+{
+ protected $expression;
+
+ /**
+ * @param string $expression An expression
+ */
+ public function __construct($expression)
+ {
+ $this->expression = (string) $expression;
+ }
+
+ /**
+ * Gets the expression.
+ *
+ * @return string The expression
+ */
+ public function __toString()
+ {
+ return $this->expression;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ExpressionFunction.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ExpressionFunction.php
new file mode 100644
index 0000000..77c88f6
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ExpressionFunction.php
@@ -0,0 +1,100 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+/**
+ * Represents a function that can be used in an expression.
+ *
+ * A function is defined by two PHP callables. The callables are used
+ * by the language to compile and/or evaluate the function.
+ *
+ * The "compiler" function is used at compilation time and must return a
+ * PHP representation of the function call (it receives the function
+ * arguments as arguments).
+ *
+ * The "evaluator" function is used for expression evaluation and must return
+ * the value of the function call based on the values defined for the
+ * expression (it receives the values as a first argument and the function
+ * arguments as remaining arguments).
+ *
+ * @author Fabien Potencier
+ */
+class ExpressionFunction
+{
+ private $name;
+ private $compiler;
+ private $evaluator;
+
+ /**
+ * @param string $name The function name
+ * @param callable $compiler A callable able to compile the function
+ * @param callable $evaluator A callable able to evaluate the function
+ */
+ public function __construct($name, callable $compiler, callable $evaluator)
+ {
+ $this->name = $name;
+ $this->compiler = $compiler;
+ $this->evaluator = $evaluator;
+ }
+
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ public function getCompiler()
+ {
+ return $this->compiler;
+ }
+
+ public function getEvaluator()
+ {
+ return $this->evaluator;
+ }
+
+ /**
+ * Creates an ExpressionFunction from a PHP function name.
+ *
+ * @param string $phpFunctionName The PHP function name
+ * @param string|null $expressionFunctionName The expression function name (default: same than the PHP function name)
+ *
+ * @return self
+ *
+ * @throws \InvalidArgumentException if given PHP function name does not exist
+ * @throws \InvalidArgumentException if given PHP function name is in namespace
+ * and expression function name is not defined
+ */
+ public static function fromPhp($phpFunctionName, $expressionFunctionName = null)
+ {
+ $phpFunctionName = ltrim($phpFunctionName, '\\');
+ if (!\function_exists($phpFunctionName)) {
+ throw new \InvalidArgumentException(sprintf('PHP function "%s" does not exist.', $phpFunctionName));
+ }
+
+ $parts = explode('\\', $phpFunctionName);
+ if (!$expressionFunctionName && \count($parts) > 1) {
+ throw new \InvalidArgumentException(sprintf('An expression function name must be defined when PHP function "%s" is namespaced.', $phpFunctionName));
+ }
+
+ $compiler = function () use ($phpFunctionName) {
+ return sprintf('\%s(%s)', $phpFunctionName, implode(', ', \func_get_args()));
+ };
+
+ $evaluator = function () use ($phpFunctionName) {
+ $args = \func_get_args();
+
+ return \call_user_func_array($phpFunctionName, array_splice($args, 1));
+ };
+
+ return new self($expressionFunctionName ?: end($parts), $compiler, $evaluator);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ExpressionFunctionProviderInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ExpressionFunctionProviderInterface.php
new file mode 100644
index 0000000..414b013
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ExpressionFunctionProviderInterface.php
@@ -0,0 +1,23 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+/**
+ * @author Fabien Potencier
+ */
+interface ExpressionFunctionProviderInterface
+{
+ /**
+ * @return ExpressionFunction[] An array of Function instances
+ */
+ public function getFunctions();
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ExpressionLanguage.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ExpressionLanguage.php
new file mode 100644
index 0000000..ad06107
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ExpressionLanguage.php
@@ -0,0 +1,178 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+use Psr\Cache\CacheItemPoolInterface;
+use Symfony\Component\Cache\Adapter\ArrayAdapter;
+use Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheAdapter;
+use Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface;
+
+/**
+ * Allows to compile and evaluate expressions written in your own DSL.
+ *
+ * @author Fabien Potencier
+ */
+class ExpressionLanguage
+{
+ private $cache;
+ private $lexer;
+ private $parser;
+ private $compiler;
+
+ protected $functions = [];
+
+ /**
+ * @param CacheItemPoolInterface $cache
+ * @param ExpressionFunctionProviderInterface[] $providers
+ */
+ public function __construct($cache = null, array $providers = [])
+ {
+ if (null !== $cache) {
+ if ($cache instanceof ParserCacheInterface) {
+ @trigger_error(sprintf('Passing an instance of %s as constructor argument for %s is deprecated as of 3.2 and will be removed in 4.0. Pass an instance of %s instead.', ParserCacheInterface::class, self::class, CacheItemPoolInterface::class), E_USER_DEPRECATED);
+ $cache = new ParserCacheAdapter($cache);
+ } elseif (!$cache instanceof CacheItemPoolInterface) {
+ throw new \InvalidArgumentException(sprintf('Cache argument has to implement "%s".', CacheItemPoolInterface::class));
+ }
+ }
+
+ $this->cache = $cache ?: new ArrayAdapter();
+ $this->registerFunctions();
+ foreach ($providers as $provider) {
+ $this->registerProvider($provider);
+ }
+ }
+
+ /**
+ * Compiles an expression source code.
+ *
+ * @param Expression|string $expression The expression to compile
+ * @param array $names An array of valid names
+ *
+ * @return string The compiled PHP source code
+ */
+ public function compile($expression, $names = [])
+ {
+ return $this->getCompiler()->compile($this->parse($expression, $names)->getNodes())->getSource();
+ }
+
+ /**
+ * Evaluate an expression.
+ *
+ * @param Expression|string $expression The expression to compile
+ * @param array $values An array of values
+ *
+ * @return mixed The result of the evaluation of the expression
+ */
+ public function evaluate($expression, $values = [])
+ {
+ return $this->parse($expression, array_keys($values))->getNodes()->evaluate($this->functions, $values);
+ }
+
+ /**
+ * Parses an expression.
+ *
+ * @param Expression|string $expression The expression to parse
+ * @param array $names An array of valid names
+ *
+ * @return ParsedExpression A ParsedExpression instance
+ */
+ public function parse($expression, $names)
+ {
+ if ($expression instanceof ParsedExpression) {
+ return $expression;
+ }
+
+ asort($names);
+ $cacheKeyItems = [];
+
+ foreach ($names as $nameKey => $name) {
+ $cacheKeyItems[] = \is_int($nameKey) ? $name : $nameKey.':'.$name;
+ }
+
+ $cacheItem = $this->cache->getItem(rawurlencode($expression.'//'.implode('|', $cacheKeyItems)));
+
+ if (null === $parsedExpression = $cacheItem->get()) {
+ $nodes = $this->getParser()->parse($this->getLexer()->tokenize((string) $expression), $names);
+ $parsedExpression = new ParsedExpression((string) $expression, $nodes);
+
+ $cacheItem->set($parsedExpression);
+ $this->cache->save($cacheItem);
+ }
+
+ return $parsedExpression;
+ }
+
+ /**
+ * Registers a function.
+ *
+ * @param string $name The function name
+ * @param callable $compiler A callable able to compile the function
+ * @param callable $evaluator A callable able to evaluate the function
+ *
+ * @throws \LogicException when registering a function after calling evaluate(), compile() or parse()
+ *
+ * @see ExpressionFunction
+ */
+ public function register($name, callable $compiler, callable $evaluator)
+ {
+ if (null !== $this->parser) {
+ throw new \LogicException('Registering functions after calling evaluate(), compile() or parse() is not supported.');
+ }
+
+ $this->functions[$name] = ['compiler' => $compiler, 'evaluator' => $evaluator];
+ }
+
+ public function addFunction(ExpressionFunction $function)
+ {
+ $this->register($function->getName(), $function->getCompiler(), $function->getEvaluator());
+ }
+
+ public function registerProvider(ExpressionFunctionProviderInterface $provider)
+ {
+ foreach ($provider->getFunctions() as $function) {
+ $this->addFunction($function);
+ }
+ }
+
+ protected function registerFunctions()
+ {
+ $this->addFunction(ExpressionFunction::fromPhp('constant'));
+ }
+
+ private function getLexer()
+ {
+ if (null === $this->lexer) {
+ $this->lexer = new Lexer();
+ }
+
+ return $this->lexer;
+ }
+
+ private function getParser()
+ {
+ if (null === $this->parser) {
+ $this->parser = new Parser($this->functions);
+ }
+
+ return $this->parser;
+ }
+
+ private function getCompiler()
+ {
+ if (null === $this->compiler) {
+ $this->compiler = new Compiler($this->functions);
+ }
+
+ return $this->compiler->reset();
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/LICENSE b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/LICENSE
new file mode 100644
index 0000000..9e936ec
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2004-2020 Fabien Potencier
+
+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.
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Lexer.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Lexer.php
new file mode 100644
index 0000000..e534a56
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Lexer.php
@@ -0,0 +1,103 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+/**
+ * Lexes an expression.
+ *
+ * @author Fabien Potencier
+ */
+class Lexer
+{
+ /**
+ * Tokenizes an expression.
+ *
+ * @param string $expression The expression to tokenize
+ *
+ * @return TokenStream A token stream instance
+ *
+ * @throws SyntaxError
+ */
+ public function tokenize($expression)
+ {
+ $expression = str_replace(["\r", "\n", "\t", "\v", "\f"], ' ', $expression);
+ $cursor = 0;
+ $tokens = [];
+ $brackets = [];
+ $end = \strlen($expression);
+
+ while ($cursor < $end) {
+ if (' ' == $expression[$cursor]) {
+ ++$cursor;
+
+ continue;
+ }
+
+ if (preg_match('/[0-9]+(?:\.[0-9]+)?/A', $expression, $match, 0, $cursor)) {
+ // numbers
+ $number = (float) $match[0]; // floats
+ if (preg_match('/^[0-9]+$/', $match[0]) && $number <= PHP_INT_MAX) {
+ $number = (int) $match[0]; // integers lower than the maximum
+ }
+ $tokens[] = new Token(Token::NUMBER_TYPE, $number, $cursor + 1);
+ $cursor += \strlen($match[0]);
+ } elseif (false !== strpos('([{', $expression[$cursor])) {
+ // opening bracket
+ $brackets[] = [$expression[$cursor], $cursor];
+
+ $tokens[] = new Token(Token::PUNCTUATION_TYPE, $expression[$cursor], $cursor + 1);
+ ++$cursor;
+ } elseif (false !== strpos(')]}', $expression[$cursor])) {
+ // closing bracket
+ if (empty($brackets)) {
+ throw new SyntaxError(sprintf('Unexpected "%s".', $expression[$cursor]), $cursor, $expression);
+ }
+
+ list($expect, $cur) = array_pop($brackets);
+ if ($expression[$cursor] != strtr($expect, '([{', ')]}')) {
+ throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $cur, $expression);
+ }
+
+ $tokens[] = new Token(Token::PUNCTUATION_TYPE, $expression[$cursor], $cursor + 1);
+ ++$cursor;
+ } elseif (preg_match('/"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As', $expression, $match, 0, $cursor)) {
+ // strings
+ $tokens[] = new Token(Token::STRING_TYPE, stripcslashes(substr($match[0], 1, -1)), $cursor + 1);
+ $cursor += \strlen($match[0]);
+ } elseif (preg_match('/(?<=^|[\s(])not in(?=[\s(])|\!\=\=|(?<=^|[\s(])not(?=[\s(])|(?<=^|[\s(])and(?=[\s(])|\=\=\=|\>\=|(?<=^|[\s(])or(?=[\s(])|\<\=|\*\*|\.\.|(?<=^|[\s(])in(?=[\s(])|&&|\|\||(?<=^|[\s(])matches|\=\=|\!\=|\*|~|%|\/|\>|\||\!|\^|&|\+|\<|\-/A', $expression, $match, 0, $cursor)) {
+ // operators
+ $tokens[] = new Token(Token::OPERATOR_TYPE, $match[0], $cursor + 1);
+ $cursor += \strlen($match[0]);
+ } elseif (false !== strpos('.,?:', $expression[$cursor])) {
+ // punctuation
+ $tokens[] = new Token(Token::PUNCTUATION_TYPE, $expression[$cursor], $cursor + 1);
+ ++$cursor;
+ } elseif (preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A', $expression, $match, 0, $cursor)) {
+ // names
+ $tokens[] = new Token(Token::NAME_TYPE, $match[0], $cursor + 1);
+ $cursor += \strlen($match[0]);
+ } else {
+ // unlexable
+ throw new SyntaxError(sprintf('Unexpected character "%s".', $expression[$cursor]), $cursor, $expression);
+ }
+ }
+
+ $tokens[] = new Token(Token::EOF_TYPE, null, $cursor + 1);
+
+ if (!empty($brackets)) {
+ list($expect, $cur) = array_pop($brackets);
+ throw new SyntaxError(sprintf('Unclosed "%s".', $expect), $cur, $expression);
+ }
+
+ return new TokenStream($tokens, $expression);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ArgumentsNode.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ArgumentsNode.php
new file mode 100644
index 0000000..e9849a4
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ArgumentsNode.php
@@ -0,0 +1,40 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Node;
+
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+/**
+ * @author Fabien Potencier
+ *
+ * @internal
+ */
+class ArgumentsNode extends ArrayNode
+{
+ public function compile(Compiler $compiler)
+ {
+ $this->compileArguments($compiler, false);
+ }
+
+ public function toArray()
+ {
+ $array = [];
+
+ foreach ($this->getKeyValuePairs() as $pair) {
+ $array[] = $pair['value'];
+ $array[] = ', ';
+ }
+ array_pop($array);
+
+ return $array;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ArrayNode.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ArrayNode.php
new file mode 100644
index 0000000..921319a
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ArrayNode.php
@@ -0,0 +1,118 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Node;
+
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+/**
+ * @author Fabien Potencier
+ *
+ * @internal
+ */
+class ArrayNode extends Node
+{
+ protected $index;
+
+ public function __construct()
+ {
+ $this->index = -1;
+ }
+
+ public function addElement(Node $value, Node $key = null)
+ {
+ if (null === $key) {
+ $key = new ConstantNode(++$this->index);
+ }
+
+ array_push($this->nodes, $key, $value);
+ }
+
+ /**
+ * Compiles the node to PHP.
+ */
+ public function compile(Compiler $compiler)
+ {
+ $compiler->raw('[');
+ $this->compileArguments($compiler);
+ $compiler->raw(']');
+ }
+
+ public function evaluate($functions, $values)
+ {
+ $result = [];
+ foreach ($this->getKeyValuePairs() as $pair) {
+ $result[$pair['key']->evaluate($functions, $values)] = $pair['value']->evaluate($functions, $values);
+ }
+
+ return $result;
+ }
+
+ public function toArray()
+ {
+ $value = [];
+ foreach ($this->getKeyValuePairs() as $pair) {
+ $value[$pair['key']->attributes['value']] = $pair['value'];
+ }
+
+ $array = [];
+
+ if ($this->isHash($value)) {
+ foreach ($value as $k => $v) {
+ $array[] = ', ';
+ $array[] = new ConstantNode($k);
+ $array[] = ': ';
+ $array[] = $v;
+ }
+ $array[0] = '{';
+ $array[] = '}';
+ } else {
+ foreach ($value as $v) {
+ $array[] = ', ';
+ $array[] = $v;
+ }
+ $array[0] = '[';
+ $array[] = ']';
+ }
+
+ return $array;
+ }
+
+ protected function getKeyValuePairs()
+ {
+ $pairs = [];
+ foreach (array_chunk($this->nodes, 2) as $pair) {
+ $pairs[] = ['key' => $pair[0], 'value' => $pair[1]];
+ }
+
+ return $pairs;
+ }
+
+ protected function compileArguments(Compiler $compiler, $withKeys = true)
+ {
+ $first = true;
+ foreach ($this->getKeyValuePairs() as $pair) {
+ if (!$first) {
+ $compiler->raw(', ');
+ }
+ $first = false;
+
+ if ($withKeys) {
+ $compiler
+ ->compile($pair['key'])
+ ->raw(' => ')
+ ;
+ }
+
+ $compiler->compile($pair['value']);
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/BinaryNode.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/BinaryNode.php
new file mode 100644
index 0000000..549161b
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/BinaryNode.php
@@ -0,0 +1,170 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Node;
+
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+/**
+ * @author Fabien Potencier
+ *
+ * @internal
+ */
+class BinaryNode extends Node
+{
+ private static $operators = [
+ '~' => '.',
+ 'and' => '&&',
+ 'or' => '||',
+ ];
+
+ private static $functions = [
+ '**' => 'pow',
+ '..' => 'range',
+ 'in' => 'in_array',
+ 'not in' => '!in_array',
+ ];
+
+ public function __construct($operator, Node $left, Node $right)
+ {
+ parent::__construct(
+ ['left' => $left, 'right' => $right],
+ ['operator' => $operator]
+ );
+ }
+
+ public function compile(Compiler $compiler)
+ {
+ $operator = $this->attributes['operator'];
+
+ if ('matches' == $operator) {
+ $compiler
+ ->raw('preg_match(')
+ ->compile($this->nodes['right'])
+ ->raw(', ')
+ ->compile($this->nodes['left'])
+ ->raw(')')
+ ;
+
+ return;
+ }
+
+ if (isset(self::$functions[$operator])) {
+ $compiler
+ ->raw(sprintf('%s(', self::$functions[$operator]))
+ ->compile($this->nodes['left'])
+ ->raw(', ')
+ ->compile($this->nodes['right'])
+ ->raw(')')
+ ;
+
+ return;
+ }
+
+ if (isset(self::$operators[$operator])) {
+ $operator = self::$operators[$operator];
+ }
+
+ $compiler
+ ->raw('(')
+ ->compile($this->nodes['left'])
+ ->raw(' ')
+ ->raw($operator)
+ ->raw(' ')
+ ->compile($this->nodes['right'])
+ ->raw(')')
+ ;
+ }
+
+ public function evaluate($functions, $values)
+ {
+ $operator = $this->attributes['operator'];
+ $left = $this->nodes['left']->evaluate($functions, $values);
+
+ if (isset(self::$functions[$operator])) {
+ $right = $this->nodes['right']->evaluate($functions, $values);
+
+ if ('not in' === $operator) {
+ return !\in_array($left, $right);
+ }
+ $f = self::$functions[$operator];
+
+ return $f($left, $right);
+ }
+
+ switch ($operator) {
+ case 'or':
+ case '||':
+ return $left || $this->nodes['right']->evaluate($functions, $values);
+ case 'and':
+ case '&&':
+ return $left && $this->nodes['right']->evaluate($functions, $values);
+ }
+
+ $right = $this->nodes['right']->evaluate($functions, $values);
+
+ switch ($operator) {
+ case '|':
+ return $left | $right;
+ case '^':
+ return $left ^ $right;
+ case '&':
+ return $left & $right;
+ case '==':
+ return $left == $right;
+ case '===':
+ return $left === $right;
+ case '!=':
+ return $left != $right;
+ case '!==':
+ return $left !== $right;
+ case '<':
+ return $left < $right;
+ case '>':
+ return $left > $right;
+ case '>=':
+ return $left >= $right;
+ case '<=':
+ return $left <= $right;
+ case 'not in':
+ return !\in_array($left, $right);
+ case 'in':
+ return \in_array($left, $right);
+ case '+':
+ return $left + $right;
+ case '-':
+ return $left - $right;
+ case '~':
+ return $left.$right;
+ case '*':
+ return $left * $right;
+ case '/':
+ if (0 == $right) {
+ throw new \DivisionByZeroError('Division by zero.');
+ }
+
+ return $left / $right;
+ case '%':
+ if (0 == $right) {
+ throw new \DivisionByZeroError('Modulo by zero.');
+ }
+
+ return $left % $right;
+ case 'matches':
+ return preg_match($right, $left);
+ }
+ }
+
+ public function toArray()
+ {
+ return ['(', $this->nodes['left'], ' '.$this->attributes['operator'].' ', $this->nodes['right'], ')'];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ConditionalNode.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ConditionalNode.php
new file mode 100644
index 0000000..ca1b484
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ConditionalNode.php
@@ -0,0 +1,56 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Node;
+
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+/**
+ * @author Fabien Potencier
+ *
+ * @internal
+ */
+class ConditionalNode extends Node
+{
+ public function __construct(Node $expr1, Node $expr2, Node $expr3)
+ {
+ parent::__construct(
+ ['expr1' => $expr1, 'expr2' => $expr2, 'expr3' => $expr3]
+ );
+ }
+
+ public function compile(Compiler $compiler)
+ {
+ $compiler
+ ->raw('((')
+ ->compile($this->nodes['expr1'])
+ ->raw(') ? (')
+ ->compile($this->nodes['expr2'])
+ ->raw(') : (')
+ ->compile($this->nodes['expr3'])
+ ->raw('))')
+ ;
+ }
+
+ public function evaluate($functions, $values)
+ {
+ if ($this->nodes['expr1']->evaluate($functions, $values)) {
+ return $this->nodes['expr2']->evaluate($functions, $values);
+ }
+
+ return $this->nodes['expr3']->evaluate($functions, $values);
+ }
+
+ public function toArray()
+ {
+ return ['(', $this->nodes['expr1'], ' ? ', $this->nodes['expr2'], ' : ', $this->nodes['expr3'], ')'];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ConstantNode.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ConstantNode.php
new file mode 100644
index 0000000..670e52e
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/ConstantNode.php
@@ -0,0 +1,81 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Node;
+
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+/**
+ * @author Fabien Potencier
+ *
+ * @internal
+ */
+class ConstantNode extends Node
+{
+ private $isIdentifier;
+
+ public function __construct($value, $isIdentifier = false)
+ {
+ $this->isIdentifier = $isIdentifier;
+ parent::__construct(
+ [],
+ ['value' => $value]
+ );
+ }
+
+ public function compile(Compiler $compiler)
+ {
+ $compiler->repr($this->attributes['value']);
+ }
+
+ public function evaluate($functions, $values)
+ {
+ return $this->attributes['value'];
+ }
+
+ public function toArray()
+ {
+ $array = [];
+ $value = $this->attributes['value'];
+
+ if ($this->isIdentifier) {
+ $array[] = $value;
+ } elseif (true === $value) {
+ $array[] = 'true';
+ } elseif (false === $value) {
+ $array[] = 'false';
+ } elseif (null === $value) {
+ $array[] = 'null';
+ } elseif (is_numeric($value)) {
+ $array[] = $value;
+ } elseif (!\is_array($value)) {
+ $array[] = $this->dumpString($value);
+ } elseif ($this->isHash($value)) {
+ foreach ($value as $k => $v) {
+ $array[] = ', ';
+ $array[] = new self($k);
+ $array[] = ': ';
+ $array[] = new self($v);
+ }
+ $array[0] = '{';
+ $array[] = '}';
+ } else {
+ foreach ($value as $v) {
+ $array[] = ', ';
+ $array[] = new self($v);
+ }
+ $array[0] = '[';
+ $array[] = ']';
+ }
+
+ return $array;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/FunctionNode.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/FunctionNode.php
new file mode 100644
index 0000000..90008d5
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/FunctionNode.php
@@ -0,0 +1,67 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Node;
+
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+/**
+ * @author Fabien Potencier
+ *
+ * @internal
+ */
+class FunctionNode extends Node
+{
+ public function __construct($name, Node $arguments)
+ {
+ parent::__construct(
+ ['arguments' => $arguments],
+ ['name' => $name]
+ );
+ }
+
+ public function compile(Compiler $compiler)
+ {
+ $arguments = [];
+ foreach ($this->nodes['arguments']->nodes as $node) {
+ $arguments[] = $compiler->subcompile($node);
+ }
+
+ $function = $compiler->getFunction($this->attributes['name']);
+
+ $compiler->raw(\call_user_func_array($function['compiler'], $arguments));
+ }
+
+ public function evaluate($functions, $values)
+ {
+ $arguments = [$values];
+ foreach ($this->nodes['arguments']->nodes as $node) {
+ $arguments[] = $node->evaluate($functions, $values);
+ }
+
+ return \call_user_func_array($functions[$this->attributes['name']]['evaluator'], $arguments);
+ }
+
+ public function toArray()
+ {
+ $array = [];
+ $array[] = $this->attributes['name'];
+
+ foreach ($this->nodes['arguments']->nodes as $node) {
+ $array[] = ', ';
+ $array[] = $node;
+ }
+ $array[1] = '(';
+ $array[] = ')';
+
+ return $array;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/GetAttrNode.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/GetAttrNode.php
new file mode 100644
index 0000000..1cf414a
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/GetAttrNode.php
@@ -0,0 +1,114 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Node;
+
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+/**
+ * @author Fabien Potencier
+ *
+ * @internal
+ */
+class GetAttrNode extends Node
+{
+ const PROPERTY_CALL = 1;
+ const METHOD_CALL = 2;
+ const ARRAY_CALL = 3;
+
+ public function __construct(Node $node, Node $attribute, ArrayNode $arguments, $type)
+ {
+ parent::__construct(
+ ['node' => $node, 'attribute' => $attribute, 'arguments' => $arguments],
+ ['type' => $type]
+ );
+ }
+
+ public function compile(Compiler $compiler)
+ {
+ switch ($this->attributes['type']) {
+ case self::PROPERTY_CALL:
+ $compiler
+ ->compile($this->nodes['node'])
+ ->raw('->')
+ ->raw($this->nodes['attribute']->attributes['value'])
+ ;
+ break;
+
+ case self::METHOD_CALL:
+ $compiler
+ ->compile($this->nodes['node'])
+ ->raw('->')
+ ->raw($this->nodes['attribute']->attributes['value'])
+ ->raw('(')
+ ->compile($this->nodes['arguments'])
+ ->raw(')')
+ ;
+ break;
+
+ case self::ARRAY_CALL:
+ $compiler
+ ->compile($this->nodes['node'])
+ ->raw('[')
+ ->compile($this->nodes['attribute'])->raw(']')
+ ;
+ break;
+ }
+ }
+
+ public function evaluate($functions, $values)
+ {
+ switch ($this->attributes['type']) {
+ case self::PROPERTY_CALL:
+ $obj = $this->nodes['node']->evaluate($functions, $values);
+ if (!\is_object($obj)) {
+ throw new \RuntimeException('Unable to get a property on a non-object.');
+ }
+
+ $property = $this->nodes['attribute']->attributes['value'];
+
+ return $obj->$property;
+
+ case self::METHOD_CALL:
+ $obj = $this->nodes['node']->evaluate($functions, $values);
+ if (!\is_object($obj)) {
+ throw new \RuntimeException('Unable to get a property on a non-object.');
+ }
+ if (!\is_callable($toCall = [$obj, $this->nodes['attribute']->attributes['value']])) {
+ throw new \RuntimeException(sprintf('Unable to call method "%s" of object "%s".', $this->nodes['attribute']->attributes['value'], \get_class($obj)));
+ }
+
+ return \call_user_func_array($toCall, $this->nodes['arguments']->evaluate($functions, $values));
+
+ case self::ARRAY_CALL:
+ $array = $this->nodes['node']->evaluate($functions, $values);
+ if (!\is_array($array) && !$array instanceof \ArrayAccess) {
+ throw new \RuntimeException('Unable to get an item on a non-array.');
+ }
+
+ return $array[$this->nodes['attribute']->evaluate($functions, $values)];
+ }
+ }
+
+ public function toArray()
+ {
+ switch ($this->attributes['type']) {
+ case self::PROPERTY_CALL:
+ return [$this->nodes['node'], '.', $this->nodes['attribute']];
+
+ case self::METHOD_CALL:
+ return [$this->nodes['node'], '.', $this->nodes['attribute'], '(', $this->nodes['arguments'], ')'];
+
+ case self::ARRAY_CALL:
+ return [$this->nodes['node'], '[', $this->nodes['attribute'], ']'];
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/NameNode.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/NameNode.php
new file mode 100644
index 0000000..1c9c277
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/NameNode.php
@@ -0,0 +1,45 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Node;
+
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+/**
+ * @author Fabien Potencier
+ *
+ * @internal
+ */
+class NameNode extends Node
+{
+ public function __construct($name)
+ {
+ parent::__construct(
+ [],
+ ['name' => $name]
+ );
+ }
+
+ public function compile(Compiler $compiler)
+ {
+ $compiler->raw('$'.$this->attributes['name']);
+ }
+
+ public function evaluate($functions, $values)
+ {
+ return $values[$this->attributes['name']];
+ }
+
+ public function toArray()
+ {
+ return [$this->attributes['name']];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/Node.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/Node.php
new file mode 100644
index 0000000..9504590
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/Node.php
@@ -0,0 +1,110 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Node;
+
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+/**
+ * Represents a node in the AST.
+ *
+ * @author Fabien Potencier
+ */
+class Node
+{
+ public $nodes = [];
+ public $attributes = [];
+
+ /**
+ * @param array $nodes An array of nodes
+ * @param array $attributes An array of attributes
+ */
+ public function __construct(array $nodes = [], array $attributes = [])
+ {
+ $this->nodes = $nodes;
+ $this->attributes = $attributes;
+ }
+
+ public function __toString()
+ {
+ $attributes = [];
+ foreach ($this->attributes as $name => $value) {
+ $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true)));
+ }
+
+ $repr = [str_replace('Symfony\Component\ExpressionLanguage\Node\\', '', static::class).'('.implode(', ', $attributes)];
+
+ if (\count($this->nodes)) {
+ foreach ($this->nodes as $node) {
+ foreach (explode("\n", (string) $node) as $line) {
+ $repr[] = ' '.$line;
+ }
+ }
+
+ $repr[] = ')';
+ } else {
+ $repr[0] .= ')';
+ }
+
+ return implode("\n", $repr);
+ }
+
+ public function compile(Compiler $compiler)
+ {
+ foreach ($this->nodes as $node) {
+ $node->compile($compiler);
+ }
+ }
+
+ public function evaluate($functions, $values)
+ {
+ $results = [];
+ foreach ($this->nodes as $node) {
+ $results[] = $node->evaluate($functions, $values);
+ }
+
+ return $results;
+ }
+
+ public function toArray()
+ {
+ throw new \BadMethodCallException(sprintf('Dumping a "%s" instance is not supported yet.', static::class));
+ }
+
+ public function dump()
+ {
+ $dump = '';
+
+ foreach ($this->toArray() as $v) {
+ $dump .= is_scalar($v) ? $v : $v->dump();
+ }
+
+ return $dump;
+ }
+
+ protected function dumpString($value)
+ {
+ return sprintf('"%s"', addcslashes($value, "\0\t\"\\"));
+ }
+
+ protected function isHash(array $value)
+ {
+ $expectedKey = 0;
+
+ foreach ($value as $key => $val) {
+ if ($key !== $expectedKey++) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/UnaryNode.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/UnaryNode.php
new file mode 100644
index 0000000..497b7fe
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Node/UnaryNode.php
@@ -0,0 +1,66 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Node;
+
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+/**
+ * @author Fabien Potencier
+ *
+ * @internal
+ */
+class UnaryNode extends Node
+{
+ private static $operators = [
+ '!' => '!',
+ 'not' => '!',
+ '+' => '+',
+ '-' => '-',
+ ];
+
+ public function __construct($operator, Node $node)
+ {
+ parent::__construct(
+ ['node' => $node],
+ ['operator' => $operator]
+ );
+ }
+
+ public function compile(Compiler $compiler)
+ {
+ $compiler
+ ->raw('(')
+ ->raw(self::$operators[$this->attributes['operator']])
+ ->compile($this->nodes['node'])
+ ->raw(')')
+ ;
+ }
+
+ public function evaluate($functions, $values)
+ {
+ $value = $this->nodes['node']->evaluate($functions, $values);
+ switch ($this->attributes['operator']) {
+ case 'not':
+ case '!':
+ return !$value;
+ case '-':
+ return -$value;
+ }
+
+ return $value;
+ }
+
+ public function toArray()
+ {
+ return ['(', $this->attributes['operator'].' ', $this->nodes['node'], ')'];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParsedExpression.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParsedExpression.php
new file mode 100644
index 0000000..a5603fc
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParsedExpression.php
@@ -0,0 +1,40 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+use Symfony\Component\ExpressionLanguage\Node\Node;
+
+/**
+ * Represents an already parsed expression.
+ *
+ * @author Fabien Potencier
+ */
+class ParsedExpression extends Expression
+{
+ private $nodes;
+
+ /**
+ * @param string $expression An expression
+ * @param Node $nodes A Node representing the expression
+ */
+ public function __construct($expression, Node $nodes)
+ {
+ parent::__construct($expression);
+
+ $this->nodes = $nodes;
+ }
+
+ public function getNodes()
+ {
+ return $this->nodes;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Parser.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Parser.php
new file mode 100644
index 0000000..bfc2439
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Parser.php
@@ -0,0 +1,380 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+/**
+ * Parsers a token stream.
+ *
+ * This parser implements a "Precedence climbing" algorithm.
+ *
+ * @see http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm
+ * @see http://en.wikipedia.org/wiki/Operator-precedence_parser
+ *
+ * @author Fabien Potencier
+ */
+class Parser
+{
+ const OPERATOR_LEFT = 1;
+ const OPERATOR_RIGHT = 2;
+
+ private $stream;
+ private $unaryOperators;
+ private $binaryOperators;
+ private $functions;
+ private $names;
+
+ public function __construct(array $functions)
+ {
+ $this->functions = $functions;
+
+ $this->unaryOperators = [
+ 'not' => ['precedence' => 50],
+ '!' => ['precedence' => 50],
+ '-' => ['precedence' => 500],
+ '+' => ['precedence' => 500],
+ ];
+ $this->binaryOperators = [
+ 'or' => ['precedence' => 10, 'associativity' => self::OPERATOR_LEFT],
+ '||' => ['precedence' => 10, 'associativity' => self::OPERATOR_LEFT],
+ 'and' => ['precedence' => 15, 'associativity' => self::OPERATOR_LEFT],
+ '&&' => ['precedence' => 15, 'associativity' => self::OPERATOR_LEFT],
+ '|' => ['precedence' => 16, 'associativity' => self::OPERATOR_LEFT],
+ '^' => ['precedence' => 17, 'associativity' => self::OPERATOR_LEFT],
+ '&' => ['precedence' => 18, 'associativity' => self::OPERATOR_LEFT],
+ '==' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ '===' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ '!=' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ '!==' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ '<' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ '>' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ '>=' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ '<=' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ 'not in' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ 'in' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ 'matches' => ['precedence' => 20, 'associativity' => self::OPERATOR_LEFT],
+ '..' => ['precedence' => 25, 'associativity' => self::OPERATOR_LEFT],
+ '+' => ['precedence' => 30, 'associativity' => self::OPERATOR_LEFT],
+ '-' => ['precedence' => 30, 'associativity' => self::OPERATOR_LEFT],
+ '~' => ['precedence' => 40, 'associativity' => self::OPERATOR_LEFT],
+ '*' => ['precedence' => 60, 'associativity' => self::OPERATOR_LEFT],
+ '/' => ['precedence' => 60, 'associativity' => self::OPERATOR_LEFT],
+ '%' => ['precedence' => 60, 'associativity' => self::OPERATOR_LEFT],
+ '**' => ['precedence' => 200, 'associativity' => self::OPERATOR_RIGHT],
+ ];
+ }
+
+ /**
+ * Converts a token stream to a node tree.
+ *
+ * The valid names is an array where the values
+ * are the names that the user can use in an expression.
+ *
+ * If the variable name in the compiled PHP code must be
+ * different, define it as the key.
+ *
+ * For instance, ['this' => 'container'] means that the
+ * variable 'container' can be used in the expression
+ * but the compiled code will use 'this'.
+ *
+ * @param TokenStream $stream A token stream instance
+ * @param array $names An array of valid names
+ *
+ * @return Node\Node A node tree
+ *
+ * @throws SyntaxError
+ */
+ public function parse(TokenStream $stream, $names = [])
+ {
+ $this->stream = $stream;
+ $this->names = $names;
+
+ $node = $this->parseExpression();
+ if (!$stream->isEOF()) {
+ throw new SyntaxError(sprintf('Unexpected token "%s" of value "%s".', $stream->current->type, $stream->current->value), $stream->current->cursor, $stream->getExpression());
+ }
+
+ return $node;
+ }
+
+ public function parseExpression($precedence = 0)
+ {
+ $expr = $this->getPrimary();
+ $token = $this->stream->current;
+ while ($token->test(Token::OPERATOR_TYPE) && isset($this->binaryOperators[$token->value]) && $this->binaryOperators[$token->value]['precedence'] >= $precedence) {
+ $op = $this->binaryOperators[$token->value];
+ $this->stream->next();
+
+ $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']);
+ $expr = new Node\BinaryNode($token->value, $expr, $expr1);
+
+ $token = $this->stream->current;
+ }
+
+ if (0 === $precedence) {
+ return $this->parseConditionalExpression($expr);
+ }
+
+ return $expr;
+ }
+
+ protected function getPrimary()
+ {
+ $token = $this->stream->current;
+
+ if ($token->test(Token::OPERATOR_TYPE) && isset($this->unaryOperators[$token->value])) {
+ $operator = $this->unaryOperators[$token->value];
+ $this->stream->next();
+ $expr = $this->parseExpression($operator['precedence']);
+
+ return $this->parsePostfixExpression(new Node\UnaryNode($token->value, $expr));
+ }
+
+ if ($token->test(Token::PUNCTUATION_TYPE, '(')) {
+ $this->stream->next();
+ $expr = $this->parseExpression();
+ $this->stream->expect(Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed');
+
+ return $this->parsePostfixExpression($expr);
+ }
+
+ return $this->parsePrimaryExpression();
+ }
+
+ protected function parseConditionalExpression($expr)
+ {
+ while ($this->stream->current->test(Token::PUNCTUATION_TYPE, '?')) {
+ $this->stream->next();
+ if (!$this->stream->current->test(Token::PUNCTUATION_TYPE, ':')) {
+ $expr2 = $this->parseExpression();
+ if ($this->stream->current->test(Token::PUNCTUATION_TYPE, ':')) {
+ $this->stream->next();
+ $expr3 = $this->parseExpression();
+ } else {
+ $expr3 = new Node\ConstantNode(null);
+ }
+ } else {
+ $this->stream->next();
+ $expr2 = $expr;
+ $expr3 = $this->parseExpression();
+ }
+
+ $expr = new Node\ConditionalNode($expr, $expr2, $expr3);
+ }
+
+ return $expr;
+ }
+
+ public function parsePrimaryExpression()
+ {
+ $token = $this->stream->current;
+ switch ($token->type) {
+ case Token::NAME_TYPE:
+ $this->stream->next();
+ switch ($token->value) {
+ case 'true':
+ case 'TRUE':
+ return new Node\ConstantNode(true);
+
+ case 'false':
+ case 'FALSE':
+ return new Node\ConstantNode(false);
+
+ case 'null':
+ case 'NULL':
+ return new Node\ConstantNode(null);
+
+ default:
+ if ('(' === $this->stream->current->value) {
+ if (false === isset($this->functions[$token->value])) {
+ throw new SyntaxError(sprintf('The function "%s" does not exist.', $token->value), $token->cursor, $this->stream->getExpression(), $token->value, array_keys($this->functions));
+ }
+
+ $node = new Node\FunctionNode($token->value, $this->parseArguments());
+ } else {
+ if (!\in_array($token->value, $this->names, true)) {
+ throw new SyntaxError(sprintf('Variable "%s" is not valid.', $token->value), $token->cursor, $this->stream->getExpression(), $token->value, $this->names);
+ }
+
+ // is the name used in the compiled code different
+ // from the name used in the expression?
+ if (\is_int($name = array_search($token->value, $this->names))) {
+ $name = $token->value;
+ }
+
+ $node = new Node\NameNode($name);
+ }
+ }
+ break;
+
+ case Token::NUMBER_TYPE:
+ case Token::STRING_TYPE:
+ $this->stream->next();
+
+ return new Node\ConstantNode($token->value);
+
+ default:
+ if ($token->test(Token::PUNCTUATION_TYPE, '[')) {
+ $node = $this->parseArrayExpression();
+ } elseif ($token->test(Token::PUNCTUATION_TYPE, '{')) {
+ $node = $this->parseHashExpression();
+ } else {
+ throw new SyntaxError(sprintf('Unexpected token "%s" of value "%s".', $token->type, $token->value), $token->cursor, $this->stream->getExpression());
+ }
+ }
+
+ return $this->parsePostfixExpression($node);
+ }
+
+ public function parseArrayExpression()
+ {
+ $this->stream->expect(Token::PUNCTUATION_TYPE, '[', 'An array element was expected');
+
+ $node = new Node\ArrayNode();
+ $first = true;
+ while (!$this->stream->current->test(Token::PUNCTUATION_TYPE, ']')) {
+ if (!$first) {
+ $this->stream->expect(Token::PUNCTUATION_TYPE, ',', 'An array element must be followed by a comma');
+
+ // trailing ,?
+ if ($this->stream->current->test(Token::PUNCTUATION_TYPE, ']')) {
+ break;
+ }
+ }
+ $first = false;
+
+ $node->addElement($this->parseExpression());
+ }
+ $this->stream->expect(Token::PUNCTUATION_TYPE, ']', 'An opened array is not properly closed');
+
+ return $node;
+ }
+
+ public function parseHashExpression()
+ {
+ $this->stream->expect(Token::PUNCTUATION_TYPE, '{', 'A hash element was expected');
+
+ $node = new Node\ArrayNode();
+ $first = true;
+ while (!$this->stream->current->test(Token::PUNCTUATION_TYPE, '}')) {
+ if (!$first) {
+ $this->stream->expect(Token::PUNCTUATION_TYPE, ',', 'A hash value must be followed by a comma');
+
+ // trailing ,?
+ if ($this->stream->current->test(Token::PUNCTUATION_TYPE, '}')) {
+ break;
+ }
+ }
+ $first = false;
+
+ // a hash key can be:
+ //
+ // * a number -- 12
+ // * a string -- 'a'
+ // * a name, which is equivalent to a string -- a
+ // * an expression, which must be enclosed in parentheses -- (1 + 2)
+ if ($this->stream->current->test(Token::STRING_TYPE) || $this->stream->current->test(Token::NAME_TYPE) || $this->stream->current->test(Token::NUMBER_TYPE)) {
+ $key = new Node\ConstantNode($this->stream->current->value);
+ $this->stream->next();
+ } elseif ($this->stream->current->test(Token::PUNCTUATION_TYPE, '(')) {
+ $key = $this->parseExpression();
+ } else {
+ $current = $this->stream->current;
+
+ throw new SyntaxError(sprintf('A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "%s" of value "%s".', $current->type, $current->value), $current->cursor, $this->stream->getExpression());
+ }
+
+ $this->stream->expect(Token::PUNCTUATION_TYPE, ':', 'A hash key must be followed by a colon (:)');
+ $value = $this->parseExpression();
+
+ $node->addElement($value, $key);
+ }
+ $this->stream->expect(Token::PUNCTUATION_TYPE, '}', 'An opened hash is not properly closed');
+
+ return $node;
+ }
+
+ public function parsePostfixExpression($node)
+ {
+ $token = $this->stream->current;
+ while (Token::PUNCTUATION_TYPE == $token->type) {
+ if ('.' === $token->value) {
+ $this->stream->next();
+ $token = $this->stream->current;
+ $this->stream->next();
+
+ if (
+ Token::NAME_TYPE !== $token->type
+ &&
+ // Operators like "not" and "matches" are valid method or property names,
+ //
+ // In other words, besides NAME_TYPE, OPERATOR_TYPE could also be parsed as a property or method.
+ // This is because operators are processed by the lexer prior to names. So "not" in "foo.not()" or "matches" in "foo.matches" will be recognized as an operator first.
+ // But in fact, "not" and "matches" in such expressions shall be parsed as method or property names.
+ //
+ // And this ONLY works if the operator consists of valid characters for a property or method name.
+ //
+ // Other types, such as STRING_TYPE and NUMBER_TYPE, can't be parsed as property nor method names.
+ //
+ // As a result, if $token is NOT an operator OR $token->value is NOT a valid property or method name, an exception shall be thrown.
+ (Token::OPERATOR_TYPE !== $token->type || !preg_match('/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A', $token->value))
+ ) {
+ throw new SyntaxError('Expected name.', $token->cursor, $this->stream->getExpression());
+ }
+
+ $arg = new Node\ConstantNode($token->value, true);
+
+ $arguments = new Node\ArgumentsNode();
+ if ($this->stream->current->test(Token::PUNCTUATION_TYPE, '(')) {
+ $type = Node\GetAttrNode::METHOD_CALL;
+ foreach ($this->parseArguments()->nodes as $n) {
+ $arguments->addElement($n);
+ }
+ } else {
+ $type = Node\GetAttrNode::PROPERTY_CALL;
+ }
+
+ $node = new Node\GetAttrNode($node, $arg, $arguments, $type);
+ } elseif ('[' === $token->value) {
+ $this->stream->next();
+ $arg = $this->parseExpression();
+ $this->stream->expect(Token::PUNCTUATION_TYPE, ']');
+
+ $node = new Node\GetAttrNode($node, $arg, new Node\ArgumentsNode(), Node\GetAttrNode::ARRAY_CALL);
+ } else {
+ break;
+ }
+
+ $token = $this->stream->current;
+ }
+
+ return $node;
+ }
+
+ /**
+ * Parses arguments.
+ */
+ public function parseArguments()
+ {
+ $args = [];
+ $this->stream->expect(Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis');
+ while (!$this->stream->current->test(Token::PUNCTUATION_TYPE, ')')) {
+ if (!empty($args)) {
+ $this->stream->expect(Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma');
+ }
+
+ $args[] = $this->parseExpression();
+ }
+ $this->stream->expect(Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis');
+
+ return new Node\Node($args);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParserCache/ArrayParserCache.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParserCache/ArrayParserCache.php
new file mode 100644
index 0000000..8f9d9f4
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParserCache/ArrayParserCache.php
@@ -0,0 +1,42 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\ParserCache;
+
+@trigger_error('The '.__NAMESPACE__.'\ArrayParserCache class is deprecated since Symfony 3.2 and will be removed in 4.0. Use the Symfony\Component\Cache\Adapter\ArrayAdapter class instead.', E_USER_DEPRECATED);
+
+use Symfony\Component\ExpressionLanguage\ParsedExpression;
+
+/**
+ * @author Adrien Brault
+ *
+ * @deprecated ArrayParserCache class is deprecated since version 3.2 and will be removed in 4.0. Use the Symfony\Component\Cache\Adapter\ArrayAdapter class instead.
+ */
+class ArrayParserCache implements ParserCacheInterface
+{
+ private $cache = [];
+
+ /**
+ * {@inheritdoc}
+ */
+ public function fetch($key)
+ {
+ return isset($this->cache[$key]) ? $this->cache[$key] : null;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function save($key, ParsedExpression $expression)
+ {
+ $this->cache[$key] = $expression;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParserCache/ParserCacheAdapter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParserCache/ParserCacheAdapter.php
new file mode 100644
index 0000000..b9b448d
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParserCache/ParserCacheAdapter.php
@@ -0,0 +1,120 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\ParserCache;
+
+use Psr\Cache\CacheItemInterface;
+use Psr\Cache\CacheItemPoolInterface;
+use Symfony\Component\Cache\CacheItem;
+
+/**
+ * @author Alexandre GESLIN
+ *
+ * @internal and will be removed in Symfony 4.0.
+ */
+class ParserCacheAdapter implements CacheItemPoolInterface
+{
+ private $pool;
+ private $createCacheItem;
+
+ public function __construct(ParserCacheInterface $pool)
+ {
+ $this->pool = $pool;
+
+ $this->createCacheItem = \Closure::bind(
+ static function ($key, $value, $isHit) {
+ $item = new CacheItem();
+ $item->key = $key;
+ $item->value = $value;
+ $item->isHit = $isHit;
+
+ return $item;
+ },
+ null,
+ CacheItem::class
+ );
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItem($key)
+ {
+ $value = $this->pool->fetch($key);
+ $f = $this->createCacheItem;
+
+ return $f($key, $value, null !== $value);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function save(CacheItemInterface $item)
+ {
+ $this->pool->save($item->getKey(), $item->get());
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getItems(array $keys = [])
+ {
+ throw new \BadMethodCallException('Not implemented.');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function hasItem($key)
+ {
+ throw new \BadMethodCallException('Not implemented.');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function clear()
+ {
+ throw new \BadMethodCallException('Not implemented.');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function deleteItem($key)
+ {
+ throw new \BadMethodCallException('Not implemented.');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function deleteItems(array $keys)
+ {
+ throw new \BadMethodCallException('Not implemented.');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function saveDeferred(CacheItemInterface $item)
+ {
+ throw new \BadMethodCallException('Not implemented.');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function commit()
+ {
+ throw new \BadMethodCallException('Not implemented.');
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParserCache/ParserCacheInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParserCache/ParserCacheInterface.php
new file mode 100644
index 0000000..ed66b21
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/ParserCache/ParserCacheInterface.php
@@ -0,0 +1,41 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\ParserCache;
+
+@trigger_error('The '.__NAMESPACE__.'\ParserCacheInterface interface is deprecated since Symfony 3.2 and will be removed in 4.0. Use Psr\Cache\CacheItemPoolInterface instead.', E_USER_DEPRECATED);
+
+use Symfony\Component\ExpressionLanguage\ParsedExpression;
+
+/**
+ * @author Adrien Brault
+ *
+ * @deprecated since version 3.2, to be removed in 4.0. Use Psr\Cache\CacheItemPoolInterface instead.
+ */
+interface ParserCacheInterface
+{
+ /**
+ * Saves an expression in the cache.
+ *
+ * @param string $key The cache key
+ * @param ParsedExpression $expression A ParsedExpression instance to store in the cache
+ */
+ public function save($key, ParsedExpression $expression);
+
+ /**
+ * Fetches an expression from the cache.
+ *
+ * @param string $key The cache key
+ *
+ * @return ParsedExpression|null
+ */
+ public function fetch($key);
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/README.md b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/README.md
new file mode 100644
index 0000000..08b310d
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/README.md
@@ -0,0 +1,15 @@
+ExpressionLanguage Component
+============================
+
+The ExpressionLanguage component provides an engine that can compile and
+evaluate expressions. An expression is a one-liner that returns a value
+(mostly, but not limited to, Booleans).
+
+Resources
+---------
+
+ * [Documentation](https://symfony.com/doc/current/components/expression_language/introduction.html)
+ * [Contributing](https://symfony.com/doc/current/contributing/index.html)
+ * [Report issues](https://github.com/symfony/symfony/issues) and
+ [send Pull Requests](https://github.com/symfony/symfony/pulls)
+ in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Resources/bin/generate_operator_regex.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Resources/bin/generate_operator_regex.php
new file mode 100644
index 0000000..c86e962
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Resources/bin/generate_operator_regex.php
@@ -0,0 +1,27 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+$operators = ['not', '!', 'or', '||', '&&', 'and', '|', '^', '&', '==', '===', '!=', '!==', '<', '>', '>=', '<=', 'not in', 'in', '..', '+', '-', '~', '*', '/', '%', 'matches', '**'];
+$operators = array_combine($operators, array_map('strlen', $operators));
+arsort($operators);
+
+$regex = [];
+foreach ($operators as $operator => $length) {
+ // Collisions of character operators:
+ // - an operator that begins with a character must have a space or a parenthesis before or starting at the beginning of a string
+ // - an operator that ends with a character must be followed by a whitespace or a parenthesis
+ $regex[] =
+ (ctype_alpha($operator[0]) ? '(?<=^|[\s(])' : '')
+ .preg_quote($operator, '/')
+ .(ctype_alpha($operator[$length - 1]) ? '(?=[\s(])' : '');
+}
+
+echo '/'.implode('|', $regex).'/A';
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/SerializedParsedExpression.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/SerializedParsedExpression.php
new file mode 100644
index 0000000..dd763f7
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/SerializedParsedExpression.php
@@ -0,0 +1,37 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+/**
+ * Represents an already parsed expression.
+ *
+ * @author Fabien Potencier
+ */
+class SerializedParsedExpression extends ParsedExpression
+{
+ private $nodes;
+
+ /**
+ * @param string $expression An expression
+ * @param string $nodes The serialized nodes for the expression
+ */
+ public function __construct($expression, $nodes)
+ {
+ $this->expression = (string) $expression;
+ $this->nodes = $nodes;
+ }
+
+ public function getNodes()
+ {
+ return unserialize($this->nodes);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/SyntaxError.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/SyntaxError.php
new file mode 100644
index 0000000..3340042
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/SyntaxError.php
@@ -0,0 +1,41 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+class SyntaxError extends \LogicException
+{
+ public function __construct($message, $cursor = 0, $expression = '', $subject = null, array $proposals = null)
+ {
+ $message = sprintf('%s around position %d', rtrim($message, '.'), $cursor);
+ if ($expression) {
+ $message = sprintf('%s for expression `%s`', $message, $expression);
+ }
+ $message .= '.';
+
+ if (null !== $subject && null !== $proposals) {
+ $minScore = INF;
+ foreach ($proposals as $proposal) {
+ $distance = levenshtein($subject, $proposal);
+ if ($distance < $minScore) {
+ $guess = $proposal;
+ $minScore = $distance;
+ }
+ }
+
+ if (isset($guess) && $minScore < 3) {
+ $message .= sprintf(' Did you mean "%s"?', $guess);
+ }
+ }
+
+ parent::__construct($message);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ExpressionFunctionTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ExpressionFunctionTest.php
new file mode 100644
index 0000000..d7e23cb
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ExpressionFunctionTest.php
@@ -0,0 +1,41 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\ExpressionLanguage\ExpressionFunction;
+
+/**
+ * Tests ExpressionFunction.
+ *
+ * @author Dany Maillard
+ */
+class ExpressionFunctionTest extends TestCase
+{
+ public function testFunctionDoesNotExist()
+ {
+ $this->expectException('InvalidArgumentException');
+ $this->expectExceptionMessage('PHP function "fn_does_not_exist" does not exist.');
+ ExpressionFunction::fromPhp('fn_does_not_exist');
+ }
+
+ public function testFunctionNamespaced()
+ {
+ $this->expectException('InvalidArgumentException');
+ $this->expectExceptionMessage('An expression function name must be defined when PHP function "Symfony\Component\ExpressionLanguage\Tests\fn_namespaced" is namespaced.');
+ ExpressionFunction::fromPhp('Symfony\Component\ExpressionLanguage\Tests\fn_namespaced');
+ }
+}
+
+function fn_namespaced()
+{
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ExpressionLanguageTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ExpressionLanguageTest.php
new file mode 100644
index 0000000..6c7a802
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ExpressionLanguageTest.php
@@ -0,0 +1,308 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\ExpressionLanguage\ExpressionFunction;
+use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
+use Symfony\Component\ExpressionLanguage\ParsedExpression;
+use Symfony\Component\ExpressionLanguage\Tests\Fixtures\TestProvider;
+
+class ExpressionLanguageTest extends TestCase
+{
+ public function testCachedParse()
+ {
+ $cacheMock = $this->getMockBuilder('Psr\Cache\CacheItemPoolInterface')->getMock();
+ $cacheItemMock = $this->getMockBuilder('Psr\Cache\CacheItemInterface')->getMock();
+ $savedParsedExpression = null;
+ $expressionLanguage = new ExpressionLanguage($cacheMock);
+
+ $cacheMock
+ ->expects($this->exactly(2))
+ ->method('getItem')
+ ->with('1%20%2B%201%2F%2F')
+ ->willReturn($cacheItemMock)
+ ;
+
+ $cacheItemMock
+ ->expects($this->exactly(2))
+ ->method('get')
+ ->willReturnCallback(function () use (&$savedParsedExpression) {
+ return $savedParsedExpression;
+ })
+ ;
+
+ $cacheItemMock
+ ->expects($this->exactly(1))
+ ->method('set')
+ ->with($this->isInstanceOf(ParsedExpression::class))
+ ->willReturnCallback(function ($parsedExpression) use (&$savedParsedExpression) {
+ $savedParsedExpression = $parsedExpression;
+ })
+ ;
+
+ $cacheMock
+ ->expects($this->exactly(1))
+ ->method('save')
+ ->with($cacheItemMock)
+ ;
+
+ $parsedExpression = $expressionLanguage->parse('1 + 1', []);
+ $this->assertSame($savedParsedExpression, $parsedExpression);
+
+ $parsedExpression = $expressionLanguage->parse('1 + 1', []);
+ $this->assertSame($savedParsedExpression, $parsedExpression);
+ }
+
+ /**
+ * @group legacy
+ */
+ public function testCachedParseWithDeprecatedParserCacheInterface()
+ {
+ $cacheMock = $this->getMockBuilder('Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface')->getMock();
+
+ $savedParsedExpression = null;
+ $expressionLanguage = new ExpressionLanguage($cacheMock);
+
+ $cacheMock
+ ->expects($this->exactly(1))
+ ->method('fetch')
+ ->with('1%20%2B%201%2F%2F')
+ ->willReturn($savedParsedExpression)
+ ;
+
+ $cacheMock
+ ->expects($this->exactly(1))
+ ->method('save')
+ ->with('1%20%2B%201%2F%2F', $this->isInstanceOf(ParsedExpression::class))
+ ->willReturnCallback(function ($key, $expression) use (&$savedParsedExpression) {
+ $savedParsedExpression = $expression;
+ })
+ ;
+
+ $parsedExpression = $expressionLanguage->parse('1 + 1', []);
+ $this->assertSame($savedParsedExpression, $parsedExpression);
+ }
+
+ public function testWrongCacheImplementation()
+ {
+ $this->expectException('InvalidArgumentException');
+ $this->expectExceptionMessage('Cache argument has to implement "Psr\Cache\CacheItemPoolInterface".');
+ $cacheMock = $this->getMockBuilder('Psr\Cache\CacheItemSpoolInterface')->getMock();
+ new ExpressionLanguage($cacheMock);
+ }
+
+ public function testConstantFunction()
+ {
+ $expressionLanguage = new ExpressionLanguage();
+ $this->assertEquals(PHP_VERSION, $expressionLanguage->evaluate('constant("PHP_VERSION")'));
+
+ $expressionLanguage = new ExpressionLanguage();
+ $this->assertEquals('\constant("PHP_VERSION")', $expressionLanguage->compile('constant("PHP_VERSION")'));
+ }
+
+ public function testProviders()
+ {
+ $expressionLanguage = new ExpressionLanguage(null, [new TestProvider()]);
+ $this->assertEquals('foo', $expressionLanguage->evaluate('identity("foo")'));
+ $this->assertEquals('"foo"', $expressionLanguage->compile('identity("foo")'));
+ $this->assertEquals('FOO', $expressionLanguage->evaluate('strtoupper("foo")'));
+ $this->assertEquals('\strtoupper("foo")', $expressionLanguage->compile('strtoupper("foo")'));
+ $this->assertEquals('foo', $expressionLanguage->evaluate('strtolower("FOO")'));
+ $this->assertEquals('\strtolower("FOO")', $expressionLanguage->compile('strtolower("FOO")'));
+ $this->assertTrue($expressionLanguage->evaluate('fn_namespaced()'));
+ $this->assertEquals('\Symfony\Component\ExpressionLanguage\Tests\Fixtures\fn_namespaced()', $expressionLanguage->compile('fn_namespaced()'));
+ }
+
+ /**
+ * @dataProvider shortCircuitProviderEvaluate
+ */
+ public function testShortCircuitOperatorsEvaluate($expression, array $values, $expected)
+ {
+ $expressionLanguage = new ExpressionLanguage();
+ $this->assertEquals($expected, $expressionLanguage->evaluate($expression, $values));
+ }
+
+ /**
+ * @dataProvider shortCircuitProviderCompile
+ */
+ public function testShortCircuitOperatorsCompile($expression, array $names, $expected)
+ {
+ $result = null;
+ $expressionLanguage = new ExpressionLanguage();
+ eval(sprintf('$result = %s;', $expressionLanguage->compile($expression, $names)));
+ $this->assertSame($expected, $result);
+ }
+
+ public function testParseThrowsInsteadOfNotice()
+ {
+ $this->expectException('Symfony\Component\ExpressionLanguage\SyntaxError');
+ $this->expectExceptionMessage('Unexpected end of expression around position 6 for expression `node.`.');
+ $expressionLanguage = new ExpressionLanguage();
+ $expressionLanguage->parse('node.', ['node']);
+ }
+
+ public function shortCircuitProviderEvaluate()
+ {
+ $object = $this->getMockBuilder('stdClass')->setMethods(['foo'])->getMock();
+ $object->expects($this->never())->method('foo');
+
+ return [
+ ['false and object.foo()', ['object' => $object], false],
+ ['false && object.foo()', ['object' => $object], false],
+ ['true || object.foo()', ['object' => $object], true],
+ ['true or object.foo()', ['object' => $object], true],
+ ];
+ }
+
+ public function shortCircuitProviderCompile()
+ {
+ return [
+ ['false and foo', ['foo' => 'foo'], false],
+ ['false && foo', ['foo' => 'foo'], false],
+ ['true || foo', ['foo' => 'foo'], true],
+ ['true or foo', ['foo' => 'foo'], true],
+ ];
+ }
+
+ public function testCachingForOverriddenVariableNames()
+ {
+ $expressionLanguage = new ExpressionLanguage();
+ $expression = 'a + b';
+ $expressionLanguage->evaluate($expression, ['a' => 1, 'b' => 1]);
+ $result = $expressionLanguage->compile($expression, ['a', 'B' => 'b']);
+ $this->assertSame('($a + $B)', $result);
+ }
+
+ public function testStrictEquality()
+ {
+ $expressionLanguage = new ExpressionLanguage();
+ $expression = '123 === a';
+ $result = $expressionLanguage->compile($expression, ['a']);
+ $this->assertSame('(123 === $a)', $result);
+ }
+
+ public function testCachingWithDifferentNamesOrder()
+ {
+ $cacheMock = $this->getMockBuilder('Psr\Cache\CacheItemPoolInterface')->getMock();
+ $cacheItemMock = $this->getMockBuilder('Psr\Cache\CacheItemInterface')->getMock();
+ $expressionLanguage = new ExpressionLanguage($cacheMock);
+ $savedParsedExpression = null;
+
+ $cacheMock
+ ->expects($this->exactly(2))
+ ->method('getItem')
+ ->with('a%20%2B%20b%2F%2Fa%7CB%3Ab')
+ ->willReturn($cacheItemMock)
+ ;
+
+ $cacheItemMock
+ ->expects($this->exactly(2))
+ ->method('get')
+ ->willReturnCallback(function () use (&$savedParsedExpression) {
+ return $savedParsedExpression;
+ })
+ ;
+
+ $cacheItemMock
+ ->expects($this->exactly(1))
+ ->method('set')
+ ->with($this->isInstanceOf(ParsedExpression::class))
+ ->willReturnCallback(function ($parsedExpression) use (&$savedParsedExpression) {
+ $savedParsedExpression = $parsedExpression;
+ })
+ ;
+
+ $cacheMock
+ ->expects($this->exactly(1))
+ ->method('save')
+ ->with($cacheItemMock)
+ ;
+
+ $expression = 'a + b';
+ $expressionLanguage->compile($expression, ['a', 'B' => 'b']);
+ $expressionLanguage->compile($expression, ['B' => 'b', 'a']);
+ }
+
+ public function testOperatorCollisions()
+ {
+ $expressionLanguage = new ExpressionLanguage();
+ $expression = 'foo.not in [bar]';
+ $compiled = $expressionLanguage->compile($expression, ['foo', 'bar']);
+ $this->assertSame('in_array($foo->not, [0 => $bar])', $compiled);
+
+ $result = $expressionLanguage->evaluate($expression, ['foo' => (object) ['not' => 'test'], 'bar' => 'test']);
+ $this->assertTrue($result);
+ }
+
+ /**
+ * @dataProvider getRegisterCallbacks
+ */
+ public function testRegisterAfterParse($registerCallback)
+ {
+ $this->expectException('LogicException');
+ $el = new ExpressionLanguage();
+ $el->parse('1 + 1', []);
+ $registerCallback($el);
+ }
+
+ /**
+ * @dataProvider getRegisterCallbacks
+ */
+ public function testRegisterAfterEval($registerCallback)
+ {
+ $this->expectException('LogicException');
+ $el = new ExpressionLanguage();
+ $el->evaluate('1 + 1');
+ $registerCallback($el);
+ }
+
+ public function testCallBadCallable()
+ {
+ $this->expectException('RuntimeException');
+ $this->expectExceptionMessageRegExp('/Unable to call method "\w+" of object "\w+"./');
+ $el = new ExpressionLanguage();
+ $el->evaluate('foo.myfunction()', ['foo' => new \stdClass()]);
+ }
+
+ /**
+ * @dataProvider getRegisterCallbacks
+ */
+ public function testRegisterAfterCompile($registerCallback)
+ {
+ $this->expectException('LogicException');
+ $el = new ExpressionLanguage();
+ $el->compile('1 + 1');
+ $registerCallback($el);
+ }
+
+ public function getRegisterCallbacks()
+ {
+ return [
+ [
+ function (ExpressionLanguage $el) {
+ $el->register('fn', function () {}, function () {});
+ },
+ ],
+ [
+ function (ExpressionLanguage $el) {
+ $el->addFunction(new ExpressionFunction('fn', function () {}, function () {}));
+ },
+ ],
+ [
+ function (ExpressionLanguage $el) {
+ $el->registerProvider(new TestProvider());
+ },
+ ],
+ ];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ExpressionTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ExpressionTest.php
new file mode 100644
index 0000000..052ef22
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ExpressionTest.php
@@ -0,0 +1,28 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\ExpressionLanguage\Expression;
+
+class ExpressionTest extends TestCase
+{
+ public function testSerialization()
+ {
+ $expression = new Expression('kernel.boot()');
+
+ $serializedExpression = serialize($expression);
+ $unserializedExpression = unserialize($serializedExpression);
+
+ $this->assertEquals($expression, $unserializedExpression);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Fixtures/TestProvider.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Fixtures/TestProvider.php
new file mode 100644
index 0000000..8405d4f
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Fixtures/TestProvider.php
@@ -0,0 +1,41 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Fixtures;
+
+use Symfony\Component\ExpressionLanguage\ExpressionFunction;
+use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
+use Symfony\Component\ExpressionLanguage\ExpressionPhpFunction;
+
+class TestProvider implements ExpressionFunctionProviderInterface
+{
+ public function getFunctions()
+ {
+ return [
+ new ExpressionFunction('identity', function ($input) {
+ return $input;
+ }, function (array $values, $input) {
+ return $input;
+ }),
+
+ ExpressionFunction::fromPhp('strtoupper'),
+
+ ExpressionFunction::fromPhp('\strtolower'),
+
+ ExpressionFunction::fromPhp('Symfony\Component\ExpressionLanguage\Tests\Fixtures\fn_namespaced', 'fn_namespaced'),
+ ];
+ }
+}
+
+function fn_namespaced()
+{
+ return true;
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/LexerTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/LexerTest.php
new file mode 100644
index 0000000..6c3d1a7
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/LexerTest.php
@@ -0,0 +1,129 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\ExpressionLanguage\Lexer;
+use Symfony\Component\ExpressionLanguage\Token;
+use Symfony\Component\ExpressionLanguage\TokenStream;
+
+class LexerTest extends TestCase
+{
+ /**
+ * @var Lexer
+ */
+ private $lexer;
+
+ protected function setUp()
+ {
+ $this->lexer = new Lexer();
+ }
+
+ /**
+ * @dataProvider getTokenizeData
+ */
+ public function testTokenize($tokens, $expression)
+ {
+ $tokens[] = new Token('end of expression', null, \strlen($expression) + 1);
+ $this->assertEquals(new TokenStream($tokens, $expression), $this->lexer->tokenize($expression));
+ }
+
+ public function testTokenizeThrowsErrorWithMessage()
+ {
+ $this->expectException('Symfony\Component\ExpressionLanguage\SyntaxError');
+ $this->expectExceptionMessage('Unexpected character "\'" around position 33 for expression `service(faulty.expression.example\').dummyMethod()`.');
+ $expression = "service(faulty.expression.example').dummyMethod()";
+ $this->lexer->tokenize($expression);
+ }
+
+ public function testTokenizeThrowsErrorOnUnclosedBrace()
+ {
+ $this->expectException('Symfony\Component\ExpressionLanguage\SyntaxError');
+ $this->expectExceptionMessage('Unclosed "(" around position 7 for expression `service(unclosed.expression.dummyMethod()`.');
+ $expression = 'service(unclosed.expression.dummyMethod()';
+ $this->lexer->tokenize($expression);
+ }
+
+ public function getTokenizeData()
+ {
+ return [
+ [
+ [new Token('name', 'a', 3)],
+ ' a ',
+ ],
+ [
+ [new Token('name', 'a', 1)],
+ 'a',
+ ],
+ [
+ [new Token('string', 'foo', 1)],
+ '"foo"',
+ ],
+ [
+ [new Token('number', '3', 1)],
+ '3',
+ ],
+ [
+ [new Token('operator', '+', 1)],
+ '+',
+ ],
+ [
+ [new Token('punctuation', '.', 1)],
+ '.',
+ ],
+ [
+ [
+ new Token('punctuation', '(', 1),
+ new Token('number', '3', 2),
+ new Token('operator', '+', 4),
+ new Token('number', '5', 6),
+ new Token('punctuation', ')', 7),
+ new Token('operator', '~', 9),
+ new Token('name', 'foo', 11),
+ new Token('punctuation', '(', 14),
+ new Token('string', 'bar', 15),
+ new Token('punctuation', ')', 20),
+ new Token('punctuation', '.', 21),
+ new Token('name', 'baz', 22),
+ new Token('punctuation', '[', 25),
+ new Token('number', '4', 26),
+ new Token('punctuation', ']', 27),
+ ],
+ '(3 + 5) ~ foo("bar").baz[4]',
+ ],
+ [
+ [new Token('operator', '..', 1)],
+ '..',
+ ],
+ [
+ [new Token('string', '#foo', 1)],
+ "'#foo'",
+ ],
+ [
+ [new Token('string', '#foo', 1)],
+ '"#foo"',
+ ],
+ [
+ [
+ new Token('name', 'foo', 1),
+ new Token('punctuation', '.', 4),
+ new Token('name', 'not', 5),
+ new Token('operator', 'in', 9),
+ new Token('punctuation', '[', 12),
+ new Token('name', 'bar', 13),
+ new Token('punctuation', ']', 16),
+ ],
+ 'foo.not in [bar]',
+ ],
+ ];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/AbstractNodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/AbstractNodeTest.php
new file mode 100644
index 0000000..2975037
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/AbstractNodeTest.php
@@ -0,0 +1,50 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\ExpressionLanguage\Compiler;
+
+abstract class AbstractNodeTest extends TestCase
+{
+ /**
+ * @dataProvider getEvaluateData
+ */
+ public function testEvaluate($expected, $node, $variables = [], $functions = [])
+ {
+ $this->assertSame($expected, $node->evaluate($functions, $variables));
+ }
+
+ abstract public function getEvaluateData();
+
+ /**
+ * @dataProvider getCompileData
+ */
+ public function testCompile($expected, $node, $functions = [])
+ {
+ $compiler = new Compiler($functions);
+ $node->compile($compiler);
+ $this->assertSame($expected, $compiler->getSource());
+ }
+
+ abstract public function getCompileData();
+
+ /**
+ * @dataProvider getDumpData
+ */
+ public function testDump($expected, $node)
+ {
+ $this->assertSame($expected, $node->dump());
+ }
+
+ abstract public function getDumpData();
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ArgumentsNodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ArgumentsNodeTest.php
new file mode 100644
index 0000000..9d88b4a
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ArgumentsNodeTest.php
@@ -0,0 +1,36 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use Symfony\Component\ExpressionLanguage\Node\ArgumentsNode;
+
+class ArgumentsNodeTest extends ArrayNodeTest
+{
+ public function getCompileData()
+ {
+ return [
+ ['"a", "b"', $this->getArrayNode()],
+ ];
+ }
+
+ public function getDumpData()
+ {
+ return [
+ ['"a", "b"', $this->getArrayNode()],
+ ];
+ }
+
+ protected function createArrayNode()
+ {
+ return new ArgumentsNode();
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ArrayNodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ArrayNodeTest.php
new file mode 100644
index 0000000..3d03d83
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ArrayNodeTest.php
@@ -0,0 +1,73 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use Symfony\Component\ExpressionLanguage\Node\ArrayNode;
+use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
+
+class ArrayNodeTest extends AbstractNodeTest
+{
+ public function testSerialization()
+ {
+ $node = $this->createArrayNode();
+ $node->addElement(new ConstantNode('foo'));
+
+ $serializedNode = serialize($node);
+ $unserializedNode = unserialize($serializedNode);
+
+ $this->assertEquals($node, $unserializedNode);
+ $this->assertNotEquals($this->createArrayNode(), $unserializedNode);
+ }
+
+ public function getEvaluateData()
+ {
+ return [
+ [['b' => 'a', 'b'], $this->getArrayNode()],
+ ];
+ }
+
+ public function getCompileData()
+ {
+ return [
+ ['["b" => "a", 0 => "b"]', $this->getArrayNode()],
+ ];
+ }
+
+ public function getDumpData()
+ {
+ yield ['{"b": "a", 0: "b"}', $this->getArrayNode()];
+
+ $array = $this->createArrayNode();
+ $array->addElement(new ConstantNode('c'), new ConstantNode('a"b'));
+ $array->addElement(new ConstantNode('d'), new ConstantNode('a\b'));
+ yield ['{"a\\"b": "c", "a\\\\b": "d"}', $array];
+
+ $array = $this->createArrayNode();
+ $array->addElement(new ConstantNode('c'));
+ $array->addElement(new ConstantNode('d'));
+ yield ['["c", "d"]', $array];
+ }
+
+ protected function getArrayNode()
+ {
+ $array = $this->createArrayNode();
+ $array->addElement(new ConstantNode('a'), new ConstantNode('b'));
+ $array->addElement(new ConstantNode('b'));
+
+ return $array;
+ }
+
+ protected function createArrayNode()
+ {
+ return new ArrayNode();
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/BinaryNodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/BinaryNodeTest.php
new file mode 100644
index 0000000..b45a1e5
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/BinaryNodeTest.php
@@ -0,0 +1,166 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use Symfony\Component\ExpressionLanguage\Node\ArrayNode;
+use Symfony\Component\ExpressionLanguage\Node\BinaryNode;
+use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
+
+class BinaryNodeTest extends AbstractNodeTest
+{
+ public function getEvaluateData()
+ {
+ $array = new ArrayNode();
+ $array->addElement(new ConstantNode('a'));
+ $array->addElement(new ConstantNode('b'));
+
+ return [
+ [true, new BinaryNode('or', new ConstantNode(true), new ConstantNode(false))],
+ [true, new BinaryNode('||', new ConstantNode(true), new ConstantNode(false))],
+ [false, new BinaryNode('and', new ConstantNode(true), new ConstantNode(false))],
+ [false, new BinaryNode('&&', new ConstantNode(true), new ConstantNode(false))],
+
+ [0, new BinaryNode('&', new ConstantNode(2), new ConstantNode(4))],
+ [6, new BinaryNode('|', new ConstantNode(2), new ConstantNode(4))],
+ [6, new BinaryNode('^', new ConstantNode(2), new ConstantNode(4))],
+
+ [true, new BinaryNode('<', new ConstantNode(1), new ConstantNode(2))],
+ [true, new BinaryNode('<=', new ConstantNode(1), new ConstantNode(2))],
+ [true, new BinaryNode('<=', new ConstantNode(1), new ConstantNode(1))],
+
+ [false, new BinaryNode('>', new ConstantNode(1), new ConstantNode(2))],
+ [false, new BinaryNode('>=', new ConstantNode(1), new ConstantNode(2))],
+ [true, new BinaryNode('>=', new ConstantNode(1), new ConstantNode(1))],
+
+ [true, new BinaryNode('===', new ConstantNode(true), new ConstantNode(true))],
+ [false, new BinaryNode('!==', new ConstantNode(true), new ConstantNode(true))],
+
+ [false, new BinaryNode('==', new ConstantNode(2), new ConstantNode(1))],
+ [true, new BinaryNode('!=', new ConstantNode(2), new ConstantNode(1))],
+
+ [-1, new BinaryNode('-', new ConstantNode(1), new ConstantNode(2))],
+ [3, new BinaryNode('+', new ConstantNode(1), new ConstantNode(2))],
+ [4, new BinaryNode('*', new ConstantNode(2), new ConstantNode(2))],
+ [1, new BinaryNode('/', new ConstantNode(2), new ConstantNode(2))],
+ [1, new BinaryNode('%', new ConstantNode(5), new ConstantNode(2))],
+ [25, new BinaryNode('**', new ConstantNode(5), new ConstantNode(2))],
+ ['ab', new BinaryNode('~', new ConstantNode('a'), new ConstantNode('b'))],
+
+ [true, new BinaryNode('in', new ConstantNode('a'), $array)],
+ [false, new BinaryNode('in', new ConstantNode('c'), $array)],
+ [true, new BinaryNode('not in', new ConstantNode('c'), $array)],
+ [false, new BinaryNode('not in', new ConstantNode('a'), $array)],
+
+ [[1, 2, 3], new BinaryNode('..', new ConstantNode(1), new ConstantNode(3))],
+
+ [1, new BinaryNode('matches', new ConstantNode('abc'), new ConstantNode('/^[a-z]+$/'))],
+ ];
+ }
+
+ public function getCompileData()
+ {
+ $array = new ArrayNode();
+ $array->addElement(new ConstantNode('a'));
+ $array->addElement(new ConstantNode('b'));
+
+ return [
+ ['(true || false)', new BinaryNode('or', new ConstantNode(true), new ConstantNode(false))],
+ ['(true || false)', new BinaryNode('||', new ConstantNode(true), new ConstantNode(false))],
+ ['(true && false)', new BinaryNode('and', new ConstantNode(true), new ConstantNode(false))],
+ ['(true && false)', new BinaryNode('&&', new ConstantNode(true), new ConstantNode(false))],
+
+ ['(2 & 4)', new BinaryNode('&', new ConstantNode(2), new ConstantNode(4))],
+ ['(2 | 4)', new BinaryNode('|', new ConstantNode(2), new ConstantNode(4))],
+ ['(2 ^ 4)', new BinaryNode('^', new ConstantNode(2), new ConstantNode(4))],
+
+ ['(1 < 2)', new BinaryNode('<', new ConstantNode(1), new ConstantNode(2))],
+ ['(1 <= 2)', new BinaryNode('<=', new ConstantNode(1), new ConstantNode(2))],
+ ['(1 <= 1)', new BinaryNode('<=', new ConstantNode(1), new ConstantNode(1))],
+
+ ['(1 > 2)', new BinaryNode('>', new ConstantNode(1), new ConstantNode(2))],
+ ['(1 >= 2)', new BinaryNode('>=', new ConstantNode(1), new ConstantNode(2))],
+ ['(1 >= 1)', new BinaryNode('>=', new ConstantNode(1), new ConstantNode(1))],
+
+ ['(true === true)', new BinaryNode('===', new ConstantNode(true), new ConstantNode(true))],
+ ['(true !== true)', new BinaryNode('!==', new ConstantNode(true), new ConstantNode(true))],
+
+ ['(2 == 1)', new BinaryNode('==', new ConstantNode(2), new ConstantNode(1))],
+ ['(2 != 1)', new BinaryNode('!=', new ConstantNode(2), new ConstantNode(1))],
+
+ ['(1 - 2)', new BinaryNode('-', new ConstantNode(1), new ConstantNode(2))],
+ ['(1 + 2)', new BinaryNode('+', new ConstantNode(1), new ConstantNode(2))],
+ ['(2 * 2)', new BinaryNode('*', new ConstantNode(2), new ConstantNode(2))],
+ ['(2 / 2)', new BinaryNode('/', new ConstantNode(2), new ConstantNode(2))],
+ ['(5 % 2)', new BinaryNode('%', new ConstantNode(5), new ConstantNode(2))],
+ ['pow(5, 2)', new BinaryNode('**', new ConstantNode(5), new ConstantNode(2))],
+ ['("a" . "b")', new BinaryNode('~', new ConstantNode('a'), new ConstantNode('b'))],
+
+ ['in_array("a", [0 => "a", 1 => "b"])', new BinaryNode('in', new ConstantNode('a'), $array)],
+ ['in_array("c", [0 => "a", 1 => "b"])', new BinaryNode('in', new ConstantNode('c'), $array)],
+ ['!in_array("c", [0 => "a", 1 => "b"])', new BinaryNode('not in', new ConstantNode('c'), $array)],
+ ['!in_array("a", [0 => "a", 1 => "b"])', new BinaryNode('not in', new ConstantNode('a'), $array)],
+
+ ['range(1, 3)', new BinaryNode('..', new ConstantNode(1), new ConstantNode(3))],
+
+ ['preg_match("/^[a-z]+/i\$/", "abc")', new BinaryNode('matches', new ConstantNode('abc'), new ConstantNode('/^[a-z]+/i$/'))],
+ ];
+ }
+
+ public function getDumpData()
+ {
+ $array = new ArrayNode();
+ $array->addElement(new ConstantNode('a'));
+ $array->addElement(new ConstantNode('b'));
+
+ return [
+ ['(true or false)', new BinaryNode('or', new ConstantNode(true), new ConstantNode(false))],
+ ['(true || false)', new BinaryNode('||', new ConstantNode(true), new ConstantNode(false))],
+ ['(true and false)', new BinaryNode('and', new ConstantNode(true), new ConstantNode(false))],
+ ['(true && false)', new BinaryNode('&&', new ConstantNode(true), new ConstantNode(false))],
+
+ ['(2 & 4)', new BinaryNode('&', new ConstantNode(2), new ConstantNode(4))],
+ ['(2 | 4)', new BinaryNode('|', new ConstantNode(2), new ConstantNode(4))],
+ ['(2 ^ 4)', new BinaryNode('^', new ConstantNode(2), new ConstantNode(4))],
+
+ ['(1 < 2)', new BinaryNode('<', new ConstantNode(1), new ConstantNode(2))],
+ ['(1 <= 2)', new BinaryNode('<=', new ConstantNode(1), new ConstantNode(2))],
+ ['(1 <= 1)', new BinaryNode('<=', new ConstantNode(1), new ConstantNode(1))],
+
+ ['(1 > 2)', new BinaryNode('>', new ConstantNode(1), new ConstantNode(2))],
+ ['(1 >= 2)', new BinaryNode('>=', new ConstantNode(1), new ConstantNode(2))],
+ ['(1 >= 1)', new BinaryNode('>=', new ConstantNode(1), new ConstantNode(1))],
+
+ ['(true === true)', new BinaryNode('===', new ConstantNode(true), new ConstantNode(true))],
+ ['(true !== true)', new BinaryNode('!==', new ConstantNode(true), new ConstantNode(true))],
+
+ ['(2 == 1)', new BinaryNode('==', new ConstantNode(2), new ConstantNode(1))],
+ ['(2 != 1)', new BinaryNode('!=', new ConstantNode(2), new ConstantNode(1))],
+
+ ['(1 - 2)', new BinaryNode('-', new ConstantNode(1), new ConstantNode(2))],
+ ['(1 + 2)', new BinaryNode('+', new ConstantNode(1), new ConstantNode(2))],
+ ['(2 * 2)', new BinaryNode('*', new ConstantNode(2), new ConstantNode(2))],
+ ['(2 / 2)', new BinaryNode('/', new ConstantNode(2), new ConstantNode(2))],
+ ['(5 % 2)', new BinaryNode('%', new ConstantNode(5), new ConstantNode(2))],
+ ['(5 ** 2)', new BinaryNode('**', new ConstantNode(5), new ConstantNode(2))],
+ ['("a" ~ "b")', new BinaryNode('~', new ConstantNode('a'), new ConstantNode('b'))],
+
+ ['("a" in ["a", "b"])', new BinaryNode('in', new ConstantNode('a'), $array)],
+ ['("c" in ["a", "b"])', new BinaryNode('in', new ConstantNode('c'), $array)],
+ ['("c" not in ["a", "b"])', new BinaryNode('not in', new ConstantNode('c'), $array)],
+ ['("a" not in ["a", "b"])', new BinaryNode('not in', new ConstantNode('a'), $array)],
+
+ ['(1 .. 3)', new BinaryNode('..', new ConstantNode(1), new ConstantNode(3))],
+
+ ['("abc" matches "/^[a-z]+/i$/")', new BinaryNode('matches', new ConstantNode('abc'), new ConstantNode('/^[a-z]+/i$/'))],
+ ];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ConditionalNodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ConditionalNodeTest.php
new file mode 100644
index 0000000..13b7cbd
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ConditionalNodeTest.php
@@ -0,0 +1,42 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use Symfony\Component\ExpressionLanguage\Node\ConditionalNode;
+use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
+
+class ConditionalNodeTest extends AbstractNodeTest
+{
+ public function getEvaluateData()
+ {
+ return [
+ [1, new ConditionalNode(new ConstantNode(true), new ConstantNode(1), new ConstantNode(2))],
+ [2, new ConditionalNode(new ConstantNode(false), new ConstantNode(1), new ConstantNode(2))],
+ ];
+ }
+
+ public function getCompileData()
+ {
+ return [
+ ['((true) ? (1) : (2))', new ConditionalNode(new ConstantNode(true), new ConstantNode(1), new ConstantNode(2))],
+ ['((false) ? (1) : (2))', new ConditionalNode(new ConstantNode(false), new ConstantNode(1), new ConstantNode(2))],
+ ];
+ }
+
+ public function getDumpData()
+ {
+ return [
+ ['(true ? 1 : 2)', new ConditionalNode(new ConstantNode(true), new ConstantNode(1), new ConstantNode(2))],
+ ['(false ? 1 : 2)', new ConditionalNode(new ConstantNode(false), new ConstantNode(1), new ConstantNode(2))],
+ ];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ConstantNodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ConstantNodeTest.php
new file mode 100644
index 0000000..fee9f5b
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/ConstantNodeTest.php
@@ -0,0 +1,60 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
+
+class ConstantNodeTest extends AbstractNodeTest
+{
+ public function getEvaluateData()
+ {
+ return [
+ [false, new ConstantNode(false)],
+ [true, new ConstantNode(true)],
+ [null, new ConstantNode(null)],
+ [3, new ConstantNode(3)],
+ [3.3, new ConstantNode(3.3)],
+ ['foo', new ConstantNode('foo')],
+ [[1, 'b' => 'a'], new ConstantNode([1, 'b' => 'a'])],
+ ];
+ }
+
+ public function getCompileData()
+ {
+ return [
+ ['false', new ConstantNode(false)],
+ ['true', new ConstantNode(true)],
+ ['null', new ConstantNode(null)],
+ ['3', new ConstantNode(3)],
+ ['3.3', new ConstantNode(3.3)],
+ ['"foo"', new ConstantNode('foo')],
+ ['[0 => 1, "b" => "a"]', new ConstantNode([1, 'b' => 'a'])],
+ ];
+ }
+
+ public function getDumpData()
+ {
+ return [
+ ['false', new ConstantNode(false)],
+ ['true', new ConstantNode(true)],
+ ['null', new ConstantNode(null)],
+ ['3', new ConstantNode(3)],
+ ['3.3', new ConstantNode(3.3)],
+ ['"foo"', new ConstantNode('foo')],
+ ['foo', new ConstantNode('foo', true)],
+ ['{0: 1, "b": "a", 1: true}', new ConstantNode([1, 'b' => 'a', true])],
+ ['{"a\\"b": "c", "a\\\\b": "d"}', new ConstantNode(['a"b' => 'c', 'a\\b' => 'd'])],
+ ['["c", "d"]', new ConstantNode(['c', 'd'])],
+ ['{"a": ["b"]}', new ConstantNode(['a' => ['b']])],
+ ];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/FunctionNodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/FunctionNodeTest.php
new file mode 100644
index 0000000..c6cb02c
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/FunctionNodeTest.php
@@ -0,0 +1,52 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
+use Symfony\Component\ExpressionLanguage\Node\FunctionNode;
+use Symfony\Component\ExpressionLanguage\Node\Node;
+
+class FunctionNodeTest extends AbstractNodeTest
+{
+ public function getEvaluateData()
+ {
+ return [
+ ['bar', new FunctionNode('foo', new Node([new ConstantNode('bar')])), [], ['foo' => $this->getCallables()]],
+ ];
+ }
+
+ public function getCompileData()
+ {
+ return [
+ ['foo("bar")', new FunctionNode('foo', new Node([new ConstantNode('bar')])), ['foo' => $this->getCallables()]],
+ ];
+ }
+
+ public function getDumpData()
+ {
+ return [
+ ['foo("bar")', new FunctionNode('foo', new Node([new ConstantNode('bar')])), ['foo' => $this->getCallables()]],
+ ];
+ }
+
+ protected function getCallables()
+ {
+ return [
+ 'compiler' => function ($arg) {
+ return sprintf('foo(%s)', $arg);
+ },
+ 'evaluator' => function ($variables, $arg) {
+ return $arg;
+ },
+ ];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/GetAttrNodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/GetAttrNodeTest.php
new file mode 100644
index 0000000..c790f33
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/GetAttrNodeTest.php
@@ -0,0 +1,78 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use Symfony\Component\ExpressionLanguage\Node\ArrayNode;
+use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
+use Symfony\Component\ExpressionLanguage\Node\GetAttrNode;
+use Symfony\Component\ExpressionLanguage\Node\NameNode;
+
+class GetAttrNodeTest extends AbstractNodeTest
+{
+ public function getEvaluateData()
+ {
+ return [
+ ['b', new GetAttrNode(new NameNode('foo'), new ConstantNode(0), $this->getArrayNode(), GetAttrNode::ARRAY_CALL), ['foo' => ['b' => 'a', 'b']]],
+ ['a', new GetAttrNode(new NameNode('foo'), new ConstantNode('b'), $this->getArrayNode(), GetAttrNode::ARRAY_CALL), ['foo' => ['b' => 'a', 'b']]],
+
+ ['bar', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::PROPERTY_CALL), ['foo' => new Obj()]],
+
+ ['baz', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::METHOD_CALL), ['foo' => new Obj()]],
+ ['a', new GetAttrNode(new NameNode('foo'), new NameNode('index'), $this->getArrayNode(), GetAttrNode::ARRAY_CALL), ['foo' => ['b' => 'a', 'b'], 'index' => 'b']],
+ ];
+ }
+
+ public function getCompileData()
+ {
+ return [
+ ['$foo[0]', new GetAttrNode(new NameNode('foo'), new ConstantNode(0), $this->getArrayNode(), GetAttrNode::ARRAY_CALL)],
+ ['$foo["b"]', new GetAttrNode(new NameNode('foo'), new ConstantNode('b'), $this->getArrayNode(), GetAttrNode::ARRAY_CALL)],
+
+ ['$foo->foo', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::PROPERTY_CALL), ['foo' => new Obj()]],
+
+ ['$foo->foo(["b" => "a", 0 => "b"])', new GetAttrNode(new NameNode('foo'), new ConstantNode('foo'), $this->getArrayNode(), GetAttrNode::METHOD_CALL), ['foo' => new Obj()]],
+ ['$foo[$index]', new GetAttrNode(new NameNode('foo'), new NameNode('index'), $this->getArrayNode(), GetAttrNode::ARRAY_CALL)],
+ ];
+ }
+
+ public function getDumpData()
+ {
+ return [
+ ['foo[0]', new GetAttrNode(new NameNode('foo'), new ConstantNode(0), $this->getArrayNode(), GetAttrNode::ARRAY_CALL)],
+ ['foo["b"]', new GetAttrNode(new NameNode('foo'), new ConstantNode('b'), $this->getArrayNode(), GetAttrNode::ARRAY_CALL)],
+
+ ['foo.foo', new GetAttrNode(new NameNode('foo'), new NameNode('foo'), $this->getArrayNode(), GetAttrNode::PROPERTY_CALL), ['foo' => new Obj()]],
+
+ ['foo.foo({"b": "a", 0: "b"})', new GetAttrNode(new NameNode('foo'), new NameNode('foo'), $this->getArrayNode(), GetAttrNode::METHOD_CALL), ['foo' => new Obj()]],
+ ['foo[index]', new GetAttrNode(new NameNode('foo'), new NameNode('index'), $this->getArrayNode(), GetAttrNode::ARRAY_CALL)],
+ ];
+ }
+
+ protected function getArrayNode()
+ {
+ $array = new ArrayNode();
+ $array->addElement(new ConstantNode('a'), new ConstantNode('b'));
+ $array->addElement(new ConstantNode('b'));
+
+ return $array;
+ }
+}
+
+class Obj
+{
+ public $foo = 'bar';
+
+ public function foo()
+ {
+ return 'baz';
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/NameNodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/NameNodeTest.php
new file mode 100644
index 0000000..a30c27b
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/NameNodeTest.php
@@ -0,0 +1,38 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use Symfony\Component\ExpressionLanguage\Node\NameNode;
+
+class NameNodeTest extends AbstractNodeTest
+{
+ public function getEvaluateData()
+ {
+ return [
+ ['bar', new NameNode('foo'), ['foo' => 'bar']],
+ ];
+ }
+
+ public function getCompileData()
+ {
+ return [
+ ['$foo', new NameNode('foo')],
+ ];
+ }
+
+ public function getDumpData()
+ {
+ return [
+ ['foo', new NameNode('foo')],
+ ];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/NodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/NodeTest.php
new file mode 100644
index 0000000..351da05
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/NodeTest.php
@@ -0,0 +1,41 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
+use Symfony\Component\ExpressionLanguage\Node\Node;
+
+class NodeTest extends TestCase
+{
+ public function testToString()
+ {
+ $node = new Node([new ConstantNode('foo')]);
+
+ $this->assertEquals(<<<'EOF'
+Node(
+ ConstantNode(value: 'foo')
+)
+EOF
+ , (string) $node);
+ }
+
+ public function testSerialization()
+ {
+ $node = new Node(['foo' => 'bar'], ['bar' => 'foo']);
+
+ $serializedNode = serialize($node);
+ $unserializedNode = unserialize($serializedNode);
+
+ $this->assertEquals($node, $unserializedNode);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/UnaryNodeTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/UnaryNodeTest.php
new file mode 100644
index 0000000..bac75d2
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/Node/UnaryNodeTest.php
@@ -0,0 +1,48 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests\Node;
+
+use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
+use Symfony\Component\ExpressionLanguage\Node\UnaryNode;
+
+class UnaryNodeTest extends AbstractNodeTest
+{
+ public function getEvaluateData()
+ {
+ return [
+ [-1, new UnaryNode('-', new ConstantNode(1))],
+ [3, new UnaryNode('+', new ConstantNode(3))],
+ [false, new UnaryNode('!', new ConstantNode(true))],
+ [false, new UnaryNode('not', new ConstantNode(true))],
+ ];
+ }
+
+ public function getCompileData()
+ {
+ return [
+ ['(-1)', new UnaryNode('-', new ConstantNode(1))],
+ ['(+3)', new UnaryNode('+', new ConstantNode(3))],
+ ['(!true)', new UnaryNode('!', new ConstantNode(true))],
+ ['(!true)', new UnaryNode('not', new ConstantNode(true))],
+ ];
+ }
+
+ public function getDumpData()
+ {
+ return [
+ ['(- 1)', new UnaryNode('-', new ConstantNode(1))],
+ ['(+ 3)', new UnaryNode('+', new ConstantNode(3))],
+ ['(! true)', new UnaryNode('!', new ConstantNode(true))],
+ ['(not true)', new UnaryNode('not', new ConstantNode(true))],
+ ];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ParsedExpressionTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ParsedExpressionTest.php
new file mode 100644
index 0000000..d28101f
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ParsedExpressionTest.php
@@ -0,0 +1,29 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
+use Symfony\Component\ExpressionLanguage\ParsedExpression;
+
+class ParsedExpressionTest extends TestCase
+{
+ public function testSerialization()
+ {
+ $expression = new ParsedExpression('25', new ConstantNode('25'));
+
+ $serializedExpression = serialize($expression);
+ $unserializedExpression = unserialize($serializedExpression);
+
+ $this->assertEquals($expression, $unserializedExpression);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ParserCache/ParserCacheAdapterTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ParserCache/ParserCacheAdapterTest.php
new file mode 100644
index 0000000..2e92633
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ParserCache/ParserCacheAdapterTest.php
@@ -0,0 +1,140 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\ExpressionLanguage\Node\Node;
+use Symfony\Component\ExpressionLanguage\ParsedExpression;
+use Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheAdapter;
+
+/**
+ * @group legacy
+ */
+class ParserCacheAdapterTest extends TestCase
+{
+ public function testGetItem()
+ {
+ $poolMock = $this->getMockBuilder('Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface')->getMock();
+
+ $key = 'key';
+ $value = 'value';
+ $parserCacheAdapter = new ParserCacheAdapter($poolMock);
+
+ $poolMock
+ ->expects($this->once())
+ ->method('fetch')
+ ->with($key)
+ ->willReturn($value)
+ ;
+
+ $cacheItem = $parserCacheAdapter->getItem($key);
+
+ $this->assertEquals($cacheItem->get(), $value);
+ $this->assertEquals($cacheItem->isHit(), true);
+ }
+
+ public function testSave()
+ {
+ $poolMock = $this->getMockBuilder('Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface')->getMock();
+ $cacheItemMock = $this->getMockBuilder('Psr\Cache\CacheItemInterface')->getMock();
+ $key = 'key';
+ $value = new ParsedExpression('1 + 1', new Node([], []));
+ $parserCacheAdapter = new ParserCacheAdapter($poolMock);
+
+ $poolMock
+ ->expects($this->once())
+ ->method('save')
+ ->with($key, $value)
+ ;
+
+ $cacheItemMock
+ ->expects($this->once())
+ ->method('getKey')
+ ->willReturn($key)
+ ;
+
+ $cacheItemMock
+ ->expects($this->once())
+ ->method('get')
+ ->willReturn($value)
+ ;
+
+ $parserCacheAdapter->save($cacheItemMock);
+ }
+
+ public function testGetItems()
+ {
+ $poolMock = $this->getMockBuilder('Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface')->getMock();
+ $parserCacheAdapter = new ParserCacheAdapter($poolMock);
+ $this->expectException(\BadMethodCallException::class);
+
+ $parserCacheAdapter->getItems();
+ }
+
+ public function testHasItem()
+ {
+ $poolMock = $this->getMockBuilder('Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface')->getMock();
+ $key = 'key';
+ $parserCacheAdapter = new ParserCacheAdapter($poolMock);
+ $this->expectException(\BadMethodCallException::class);
+
+ $parserCacheAdapter->hasItem($key);
+ }
+
+ public function testClear()
+ {
+ $poolMock = $this->getMockBuilder('Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface')->getMock();
+ $parserCacheAdapter = new ParserCacheAdapter($poolMock);
+ $this->expectException(\BadMethodCallException::class);
+
+ $parserCacheAdapter->clear();
+ }
+
+ public function testDeleteItem()
+ {
+ $poolMock = $this->getMockBuilder('Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface')->getMock();
+ $key = 'key';
+ $parserCacheAdapter = new ParserCacheAdapter($poolMock);
+ $this->expectException(\BadMethodCallException::class);
+
+ $parserCacheAdapter->deleteItem($key);
+ }
+
+ public function testDeleteItems()
+ {
+ $poolMock = $this->getMockBuilder('Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface')->getMock();
+ $keys = ['key'];
+ $parserCacheAdapter = new ParserCacheAdapter($poolMock);
+ $this->expectException(\BadMethodCallException::class);
+
+ $parserCacheAdapter->deleteItems($keys);
+ }
+
+ public function testSaveDeferred()
+ {
+ $poolMock = $this->getMockBuilder('Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface')->getMock();
+ $parserCacheAdapter = new ParserCacheAdapter($poolMock);
+ $cacheItemMock = $this->getMockBuilder('Psr\Cache\CacheItemInterface')->getMock();
+ $this->expectException(\BadMethodCallException::class);
+
+ $parserCacheAdapter->saveDeferred($cacheItemMock);
+ }
+
+ public function testCommit()
+ {
+ $poolMock = $this->getMockBuilder('Symfony\Component\ExpressionLanguage\ParserCache\ParserCacheInterface')->getMock();
+ $parserCacheAdapter = new ParserCacheAdapter($poolMock);
+ $this->expectException(\BadMethodCallException::class);
+
+ $parserCacheAdapter->commit();
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ParserTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ParserTest.php
new file mode 100644
index 0000000..2d5a0a6
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Tests/ParserTest.php
@@ -0,0 +1,237 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\ExpressionLanguage\Lexer;
+use Symfony\Component\ExpressionLanguage\Node;
+use Symfony\Component\ExpressionLanguage\Parser;
+
+class ParserTest extends TestCase
+{
+ public function testParseWithInvalidName()
+ {
+ $this->expectException('Symfony\Component\ExpressionLanguage\SyntaxError');
+ $this->expectExceptionMessage('Variable "foo" is not valid around position 1 for expression `foo`.');
+ $lexer = new Lexer();
+ $parser = new Parser([]);
+ $parser->parse($lexer->tokenize('foo'));
+ }
+
+ public function testParseWithZeroInNames()
+ {
+ $this->expectException('Symfony\Component\ExpressionLanguage\SyntaxError');
+ $this->expectExceptionMessage('Variable "foo" is not valid around position 1 for expression `foo`.');
+ $lexer = new Lexer();
+ $parser = new Parser([]);
+ $parser->parse($lexer->tokenize('foo'), [0]);
+ }
+
+ /**
+ * @dataProvider getParseData
+ */
+ public function testParse($node, $expression, $names = [])
+ {
+ $lexer = new Lexer();
+ $parser = new Parser([]);
+ $this->assertEquals($node, $parser->parse($lexer->tokenize($expression), $names));
+ }
+
+ public function getParseData()
+ {
+ $arguments = new Node\ArgumentsNode();
+ $arguments->addElement(new Node\ConstantNode('arg1'));
+ $arguments->addElement(new Node\ConstantNode(2));
+ $arguments->addElement(new Node\ConstantNode(true));
+
+ $arrayNode = new Node\ArrayNode();
+ $arrayNode->addElement(new Node\NameNode('bar'));
+
+ return [
+ [
+ new Node\NameNode('a'),
+ 'a',
+ ['a'],
+ ],
+ [
+ new Node\ConstantNode('a'),
+ '"a"',
+ ],
+ [
+ new Node\ConstantNode(3),
+ '3',
+ ],
+ [
+ new Node\ConstantNode(false),
+ 'false',
+ ],
+ [
+ new Node\ConstantNode(true),
+ 'true',
+ ],
+ [
+ new Node\ConstantNode(null),
+ 'null',
+ ],
+ [
+ new Node\UnaryNode('-', new Node\ConstantNode(3)),
+ '-3',
+ ],
+ [
+ new Node\BinaryNode('-', new Node\ConstantNode(3), new Node\ConstantNode(3)),
+ '3 - 3',
+ ],
+ [
+ new Node\BinaryNode('*',
+ new Node\BinaryNode('-', new Node\ConstantNode(3), new Node\ConstantNode(3)),
+ new Node\ConstantNode(2)
+ ),
+ '(3 - 3) * 2',
+ ],
+ [
+ new Node\GetAttrNode(new Node\NameNode('foo'), new Node\ConstantNode('bar', true), new Node\ArgumentsNode(), Node\GetAttrNode::PROPERTY_CALL),
+ 'foo.bar',
+ ['foo'],
+ ],
+ [
+ new Node\GetAttrNode(new Node\NameNode('foo'), new Node\ConstantNode('bar', true), new Node\ArgumentsNode(), Node\GetAttrNode::METHOD_CALL),
+ 'foo.bar()',
+ ['foo'],
+ ],
+ [
+ new Node\GetAttrNode(new Node\NameNode('foo'), new Node\ConstantNode('not', true), new Node\ArgumentsNode(), Node\GetAttrNode::METHOD_CALL),
+ 'foo.not()',
+ ['foo'],
+ ],
+ [
+ new Node\GetAttrNode(
+ new Node\NameNode('foo'),
+ new Node\ConstantNode('bar', true),
+ $arguments,
+ Node\GetAttrNode::METHOD_CALL
+ ),
+ 'foo.bar("arg1", 2, true)',
+ ['foo'],
+ ],
+ [
+ new Node\GetAttrNode(new Node\NameNode('foo'), new Node\ConstantNode(3), new Node\ArgumentsNode(), Node\GetAttrNode::ARRAY_CALL),
+ 'foo[3]',
+ ['foo'],
+ ],
+ [
+ new Node\ConditionalNode(new Node\ConstantNode(true), new Node\ConstantNode(true), new Node\ConstantNode(false)),
+ 'true ? true : false',
+ ],
+ [
+ new Node\BinaryNode('matches', new Node\ConstantNode('foo'), new Node\ConstantNode('/foo/')),
+ '"foo" matches "/foo/"',
+ ],
+
+ // chained calls
+ [
+ $this->createGetAttrNode(
+ $this->createGetAttrNode(
+ $this->createGetAttrNode(
+ $this->createGetAttrNode(new Node\NameNode('foo'), 'bar', Node\GetAttrNode::METHOD_CALL),
+ 'foo', Node\GetAttrNode::METHOD_CALL),
+ 'baz', Node\GetAttrNode::PROPERTY_CALL),
+ '3', Node\GetAttrNode::ARRAY_CALL),
+ 'foo.bar().foo().baz[3]',
+ ['foo'],
+ ],
+
+ [
+ new Node\NameNode('foo'),
+ 'bar',
+ ['foo' => 'bar'],
+ ],
+
+ // Operators collisions
+ [
+ new Node\BinaryNode(
+ 'in',
+ new Node\GetAttrNode(
+ new Node\NameNode('foo'),
+ new Node\ConstantNode('not', true),
+ new Node\ArgumentsNode(),
+ Node\GetAttrNode::PROPERTY_CALL
+ ),
+ $arrayNode
+ ),
+ 'foo.not in [bar]',
+ ['foo', 'bar'],
+ ],
+ [
+ new Node\BinaryNode(
+ 'or',
+ new Node\UnaryNode('not', new Node\NameNode('foo')),
+ new Node\GetAttrNode(
+ new Node\NameNode('foo'),
+ new Node\ConstantNode('not', true),
+ new Node\ArgumentsNode(),
+ Node\GetAttrNode::PROPERTY_CALL
+ )
+ ),
+ 'not foo or foo.not',
+ ['foo'],
+ ],
+ ];
+ }
+
+ private function createGetAttrNode($node, $item, $type)
+ {
+ return new Node\GetAttrNode($node, new Node\ConstantNode($item, Node\GetAttrNode::ARRAY_CALL !== $type), new Node\ArgumentsNode(), $type);
+ }
+
+ /**
+ * @dataProvider getInvalidPostfixData
+ */
+ public function testParseWithInvalidPostfixData($expr, $names = [])
+ {
+ $this->expectException('Symfony\Component\ExpressionLanguage\SyntaxError');
+ $lexer = new Lexer();
+ $parser = new Parser([]);
+ $parser->parse($lexer->tokenize($expr), $names);
+ }
+
+ public function getInvalidPostfixData()
+ {
+ return [
+ [
+ 'foo."#"',
+ ['foo'],
+ ],
+ [
+ 'foo."bar"',
+ ['foo'],
+ ],
+ [
+ 'foo.**',
+ ['foo'],
+ ],
+ [
+ 'foo.123',
+ ['foo'],
+ ],
+ ];
+ }
+
+ public function testNameProposal()
+ {
+ $this->expectException('Symfony\Component\ExpressionLanguage\SyntaxError');
+ $this->expectExceptionMessage('Did you mean "baz"?');
+ $lexer = new Lexer();
+ $parser = new Parser([]);
+
+ $parser->parse($lexer->tokenize('foo > bar'), ['foo', 'baz']);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Token.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Token.php
new file mode 100644
index 0000000..4517335
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/Token.php
@@ -0,0 +1,66 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+/**
+ * Represents a Token.
+ *
+ * @author Fabien Potencier
+ */
+class Token
+{
+ public $value;
+ public $type;
+ public $cursor;
+
+ const EOF_TYPE = 'end of expression';
+ const NAME_TYPE = 'name';
+ const NUMBER_TYPE = 'number';
+ const STRING_TYPE = 'string';
+ const OPERATOR_TYPE = 'operator';
+ const PUNCTUATION_TYPE = 'punctuation';
+
+ /**
+ * @param string $type The type of the token (self::*_TYPE)
+ * @param string|int|float|null $value The token value
+ * @param int $cursor The cursor position in the source
+ */
+ public function __construct($type, $value, $cursor)
+ {
+ $this->type = $type;
+ $this->value = $value;
+ $this->cursor = $cursor;
+ }
+
+ /**
+ * Returns a string representation of the token.
+ *
+ * @return string A string representation of the token
+ */
+ public function __toString()
+ {
+ return sprintf('%3d %-11s %s', $this->cursor, strtoupper($this->type), $this->value);
+ }
+
+ /**
+ * Tests the current token for a type and/or a value.
+ *
+ * @param array|int $type The type to test
+ * @param string|null $value The token value
+ *
+ * @return bool
+ */
+ public function test($type, $value = null)
+ {
+ return $this->type === $type && (null === $value || $this->value == $value);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/TokenStream.php b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/TokenStream.php
new file mode 100644
index 0000000..09d3854
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/TokenStream.php
@@ -0,0 +1,97 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\ExpressionLanguage;
+
+/**
+ * Represents a token stream.
+ *
+ * @author Fabien Potencier
+ */
+class TokenStream
+{
+ public $current;
+
+ private $tokens;
+ private $position = 0;
+ private $expression;
+
+ /**
+ * @param array $tokens An array of tokens
+ * @param string $expression
+ */
+ public function __construct(array $tokens, $expression = '')
+ {
+ $this->tokens = $tokens;
+ $this->current = $tokens[0];
+ $this->expression = $expression;
+ }
+
+ /**
+ * Returns a string representation of the token stream.
+ *
+ * @return string
+ */
+ public function __toString()
+ {
+ return implode("\n", $this->tokens);
+ }
+
+ /**
+ * Sets the pointer to the next token and returns the old one.
+ */
+ public function next()
+ {
+ ++$this->position;
+
+ if (!isset($this->tokens[$this->position])) {
+ throw new SyntaxError('Unexpected end of expression.', $this->current->cursor, $this->expression);
+ }
+
+ $this->current = $this->tokens[$this->position];
+ }
+
+ /**
+ * Tests a token.
+ *
+ * @param array|int $type The type to test
+ * @param string|null $value The token value
+ * @param string|null $message The syntax error message
+ */
+ public function expect($type, $value = null, $message = null)
+ {
+ $token = $this->current;
+ if (!$token->test($type, $value)) {
+ throw new SyntaxError(sprintf('%sUnexpected token "%s" of value "%s" ("%s" expected%s).', $message ? $message.'. ' : '', $token->type, $token->value, $type, $value ? sprintf(' with value "%s"', $value) : ''), $token->cursor, $this->expression);
+ }
+ $this->next();
+ }
+
+ /**
+ * Checks if end of stream was reached.
+ *
+ * @return bool
+ */
+ public function isEOF()
+ {
+ return Token::EOF_TYPE === $this->current->type;
+ }
+
+ /**
+ * @internal
+ *
+ * @return string
+ */
+ public function getExpression()
+ {
+ return $this->expression;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/composer.json b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/composer.json
new file mode 100644
index 0000000..ee44185
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/composer.json
@@ -0,0 +1,35 @@
+{
+ "name": "symfony/expression-language",
+ "type": "library",
+ "description": "Symfony ExpressionLanguage Component",
+ "keywords": [],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": "^5.5.9|>=7.0.8",
+ "symfony/cache": "~3.1|~4.0",
+ "symfony/polyfill-php70": "~1.6"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Component\\ExpressionLanguage\\": "" },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/phpunit.xml.dist b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/phpunit.xml.dist
new file mode 100644
index 0000000..ae84dcd
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/expression-language/phpunit.xml.dist
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+ ./Tests/
+
+
+
+
+
+ ./
+
+ ./Tests
+ ./vendor
+
+
+
+
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/LICENSE b/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/LICENSE
new file mode 100644
index 0000000..4cd8bdd
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2015-2019 Fabien Potencier
+
+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.
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/Php70.php b/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/Php70.php
new file mode 100644
index 0000000..7f1ad08
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/Php70.php
@@ -0,0 +1,74 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Polyfill\Php70;
+
+/**
+ * @author Nicolas Grekas
+ *
+ * @internal
+ */
+final class Php70
+{
+ public static function intdiv($dividend, $divisor)
+ {
+ $dividend = self::intArg($dividend, __FUNCTION__, 1);
+ $divisor = self::intArg($divisor, __FUNCTION__, 2);
+
+ if (0 === $divisor) {
+ throw new \DivisionByZeroError('Division by zero');
+ }
+ if (-1 === $divisor && ~PHP_INT_MAX === $dividend) {
+ throw new \ArithmeticError('Division of PHP_INT_MIN by -1 is not an integer');
+ }
+
+ return ($dividend - ($dividend % $divisor)) / $divisor;
+ }
+
+ public static function preg_replace_callback_array(array $patterns, $subject, $limit = -1, &$count = 0)
+ {
+ $count = 0;
+ $result = (string) $subject;
+ if (0 === $limit = self::intArg($limit, __FUNCTION__, 3)) {
+ return $result;
+ }
+
+ foreach ($patterns as $pattern => $callback) {
+ $result = preg_replace_callback($pattern, $callback, $result, $limit, $c);
+ $count += $c;
+ }
+
+ return $result;
+ }
+
+ public static function error_clear_last()
+ {
+ static $handler;
+ if (!$handler) {
+ $handler = function () { return false; };
+ }
+ set_error_handler($handler);
+ @trigger_error('');
+ restore_error_handler();
+ }
+
+ private static function intArg($value, $caller, $pos)
+ {
+ if (\is_int($value)) {
+ return $value;
+ }
+ if (!\is_numeric($value) || PHP_INT_MAX <= ($value += 0) || ~PHP_INT_MAX >= $value) {
+ throw new \TypeError(sprintf('%s() expects parameter %d to be integer, %s given', $caller, $pos, \gettype($value)));
+ }
+
+ return (int) $value;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/README.md b/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/README.md
new file mode 100644
index 0000000..abd5488
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/README.md
@@ -0,0 +1,28 @@
+Symfony Polyfill / Php70
+========================
+
+This component provides features unavailable in releases prior to PHP 7.0:
+
+- [`intdiv`](https://php.net/intdiv)
+- [`preg_replace_callback_array`](https://php.net/preg_replace_callback_array)
+- [`error_clear_last`](https://php.net/error_clear_last)
+- `random_bytes` and `random_int` (from [paragonie/random_compat](https://github.com/paragonie/random_compat))
+- [`*Error` throwable classes](https://php.net/Error)
+- [`PHP_INT_MIN`](https://php.net/reserved.constants#constant.php-int-min)
+- `SessionUpdateTimestampHandlerInterface`
+
+More information can be found in the
+[main Polyfill README](https://github.com/symfony/polyfill/blob/master/README.md).
+
+Compatibility notes
+===================
+
+To write portable code between PHP5 and PHP7, some care must be taken:
+- `\*Error` exceptions must be caught before `\Exception`;
+- after calling `error_clear_last()`, the result of `$e = error_get_last()` must be
+ verified using `isset($e['message'][0])` instead of `null !== $e`.
+
+License
+=======
+
+This library is released under the [MIT license](LICENSE).
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php b/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php
new file mode 100644
index 0000000..6819124
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php
@@ -0,0 +1,5 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+use Symfony\Polyfill\Php70 as p;
+
+if (PHP_VERSION_ID < 70000) {
+ if (!defined('PHP_INT_MIN')) {
+ define('PHP_INT_MIN', ~PHP_INT_MAX);
+ }
+ if (!function_exists('intdiv')) {
+ function intdiv($dividend, $divisor) { return p\Php70::intdiv($dividend, $divisor); }
+ }
+ if (!function_exists('preg_replace_callback_array')) {
+ function preg_replace_callback_array(array $patterns, $subject, $limit = -1, &$count = 0) { return p\Php70::preg_replace_callback_array($patterns, $subject, $limit, $count); }
+ }
+ if (!function_exists('error_clear_last')) {
+ function error_clear_last() { return p\Php70::error_clear_last(); }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/composer.json b/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/composer.json
new file mode 100644
index 0000000..98599f0
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/polyfill-php70/composer.json
@@ -0,0 +1,33 @@
+{
+ "name": "symfony/polyfill-php70",
+ "type": "library",
+ "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions",
+ "keywords": ["polyfill", "shim", "compatibility", "portable"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.3",
+ "paragonie/random_compat": "~1.0|~2.0|~9.99"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Polyfill\\Php70\\": "" },
+ "files": [ "bootstrap.php" ],
+ "classmap": [ "Resources/stubs" ]
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.15-dev"
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/.gitignore b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/.gitignore
new file mode 100644
index 0000000..c49a5d8
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/.gitignore
@@ -0,0 +1,3 @@
+vendor/
+composer.lock
+phpunit.xml
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/LICENSE b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/LICENSE
new file mode 100644
index 0000000..3f853aa
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2018-2019 Fabien Potencier
+
+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.
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/README.md b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/README.md
new file mode 100644
index 0000000..d033a43
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/README.md
@@ -0,0 +1,9 @@
+Symfony Service Contracts
+=========================
+
+A set of abstractions extracted out of the Symfony components.
+
+Can be used to build on semantics that the Symfony components proved useful - and
+that already have battle tested implementations.
+
+See https://github.com/symfony/contracts/blob/master/README.md for more information.
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ResetInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ResetInterface.php
new file mode 100644
index 0000000..1af1075
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ResetInterface.php
@@ -0,0 +1,30 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service;
+
+/**
+ * Provides a way to reset an object to its initial state.
+ *
+ * When calling the "reset()" method on an object, it should be put back to its
+ * initial state. This usually means clearing any internal buffers and forwarding
+ * the call to internal dependencies. All properties of the object should be put
+ * back to the same state it had when it was first ready to use.
+ *
+ * This method could be called, for example, to recycle objects that are used as
+ * services, so that they can be used to handle several requests in the same
+ * process loop (note that we advise making your services stateless instead of
+ * implementing this interface when possible.)
+ */
+interface ResetInterface
+{
+ public function reset();
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceLocatorTrait.php b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceLocatorTrait.php
new file mode 100644
index 0000000..4ec6eb4
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceLocatorTrait.php
@@ -0,0 +1,122 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service;
+
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
+
+/**
+ * A trait to help implement ServiceProviderInterface.
+ *
+ * @author Robin Chalas
+ * @author Nicolas Grekas
+ */
+trait ServiceLocatorTrait
+{
+ private $factories;
+ private $loading = [];
+ private $providedTypes;
+
+ /**
+ * @param callable[] $factories
+ */
+ public function __construct(array $factories)
+ {
+ $this->factories = $factories;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @return bool
+ */
+ public function has($id)
+ {
+ return isset($this->factories[$id]);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($id)
+ {
+ if (!isset($this->factories[$id])) {
+ throw $this->createNotFoundException($id);
+ }
+
+ if (isset($this->loading[$id])) {
+ $ids = array_values($this->loading);
+ $ids = \array_slice($this->loading, array_search($id, $ids));
+ $ids[] = $id;
+
+ throw $this->createCircularReferenceException($id, $ids);
+ }
+
+ $this->loading[$id] = $id;
+ try {
+ return $this->factories[$id]($this);
+ } finally {
+ unset($this->loading[$id]);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getProvidedServices(): array
+ {
+ if (null === $this->providedTypes) {
+ $this->providedTypes = [];
+
+ foreach ($this->factories as $name => $factory) {
+ if (!\is_callable($factory)) {
+ $this->providedTypes[$name] = '?';
+ } else {
+ $type = (new \ReflectionFunction($factory))->getReturnType();
+
+ $this->providedTypes[$name] = $type ? ($type->allowsNull() ? '?' : '').$type->getName() : '?';
+ }
+ }
+ }
+
+ return $this->providedTypes;
+ }
+
+ private function createNotFoundException(string $id): NotFoundExceptionInterface
+ {
+ if (!$alternatives = array_keys($this->factories)) {
+ $message = 'is empty...';
+ } else {
+ $last = array_pop($alternatives);
+ if ($alternatives) {
+ $message = sprintf('only knows about the "%s" and "%s" services.', implode('", "', $alternatives), $last);
+ } else {
+ $message = sprintf('only knows about the "%s" service.', $last);
+ }
+ }
+
+ if ($this->loading) {
+ $message = sprintf('The service "%s" has a dependency on a non-existent service "%s". This locator %s', end($this->loading), $id, $message);
+ } else {
+ $message = sprintf('Service "%s" not found: the current service locator %s', $id, $message);
+ }
+
+ return new class($message) extends \InvalidArgumentException implements NotFoundExceptionInterface {
+ };
+ }
+
+ private function createCircularReferenceException(string $id, array $path): ContainerExceptionInterface
+ {
+ return new class(sprintf('Circular reference detected for service "%s", path: "%s".', $id, implode(' -> ', $path))) extends \RuntimeException implements ContainerExceptionInterface {
+ };
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceProviderInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceProviderInterface.php
new file mode 100644
index 0000000..c60ad0b
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceProviderInterface.php
@@ -0,0 +1,36 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service;
+
+use Psr\Container\ContainerInterface;
+
+/**
+ * A ServiceProviderInterface exposes the identifiers and the types of services provided by a container.
+ *
+ * @author Nicolas Grekas
+ * @author Mateusz Sip
+ */
+interface ServiceProviderInterface extends ContainerInterface
+{
+ /**
+ * Returns an associative array of service types keyed by the identifiers provided by the current container.
+ *
+ * Examples:
+ *
+ * * ['logger' => 'Psr\Log\LoggerInterface'] means the object provides a service named "logger" that implements Psr\Log\LoggerInterface
+ * * ['foo' => '?'] means the container provides service name "foo" of unspecified type
+ * * ['bar' => '?Bar\Baz'] means the container provides a service "bar" of type Bar\Baz|null
+ *
+ * @return string[] The provided service types, keyed by service names
+ */
+ public function getProvidedServices(): array;
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceSubscriberInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceSubscriberInterface.php
new file mode 100644
index 0000000..8bb320f
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceSubscriberInterface.php
@@ -0,0 +1,53 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service;
+
+/**
+ * A ServiceSubscriber exposes its dependencies via the static {@link getSubscribedServices} method.
+ *
+ * The getSubscribedServices method returns an array of service types required by such instances,
+ * optionally keyed by the service names used internally. Service types that start with an interrogation
+ * mark "?" are optional, while the other ones are mandatory service dependencies.
+ *
+ * The injected service locators SHOULD NOT allow access to any other services not specified by the method.
+ *
+ * It is expected that ServiceSubscriber instances consume PSR-11-based service locators internally.
+ * This interface does not dictate any injection method for these service locators, although constructor
+ * injection is recommended.
+ *
+ * @author Nicolas Grekas
+ */
+interface ServiceSubscriberInterface
+{
+ /**
+ * Returns an array of service types required by such instances, optionally keyed by the service names used internally.
+ *
+ * For mandatory dependencies:
+ *
+ * * ['logger' => 'Psr\Log\LoggerInterface'] means the objects use the "logger" name
+ * internally to fetch a service which must implement Psr\Log\LoggerInterface.
+ * * ['loggers' => 'Psr\Log\LoggerInterface[]'] means the objects use the "loggers" name
+ * internally to fetch an iterable of Psr\Log\LoggerInterface instances.
+ * * ['Psr\Log\LoggerInterface'] is a shortcut for
+ * * ['Psr\Log\LoggerInterface' => 'Psr\Log\LoggerInterface']
+ *
+ * otherwise:
+ *
+ * * ['logger' => '?Psr\Log\LoggerInterface'] denotes an optional dependency
+ * * ['loggers' => '?Psr\Log\LoggerInterface[]'] denotes an optional iterable dependency
+ * * ['?Psr\Log\LoggerInterface'] is a shortcut for
+ * * ['Psr\Log\LoggerInterface' => '?Psr\Log\LoggerInterface']
+ *
+ * @return array The required service types, optionally keyed by service names
+ */
+ public static function getSubscribedServices();
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceSubscriberTrait.php b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceSubscriberTrait.php
new file mode 100644
index 0000000..5d9d456
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/ServiceSubscriberTrait.php
@@ -0,0 +1,63 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service;
+
+use Psr\Container\ContainerInterface;
+
+/**
+ * Implementation of ServiceSubscriberInterface that determines subscribed services from
+ * private method return types. Service ids are available as "ClassName::methodName".
+ *
+ * @author Kevin Bond
+ */
+trait ServiceSubscriberTrait
+{
+ /** @var ContainerInterface */
+ protected $container;
+
+ public static function getSubscribedServices(): array
+ {
+ static $services;
+
+ if (null !== $services) {
+ return $services;
+ }
+
+ $services = \is_callable(['parent', __FUNCTION__]) ? parent::getSubscribedServices() : [];
+
+ foreach ((new \ReflectionClass(self::class))->getMethods() as $method) {
+ if ($method->isStatic() || $method->isAbstract() || $method->isGenerator() || $method->isInternal() || $method->getNumberOfRequiredParameters()) {
+ continue;
+ }
+
+ if (self::class === $method->getDeclaringClass()->name && ($returnType = $method->getReturnType()) && !$returnType->isBuiltin()) {
+ $services[self::class.'::'.$method->name] = '?'.$returnType->getName();
+ }
+ }
+
+ return $services;
+ }
+
+ /**
+ * @required
+ */
+ public function setContainer(ContainerInterface $container)
+ {
+ $this->container = $container;
+
+ if (\is_callable(['parent', __FUNCTION__])) {
+ return parent::setContainer($container);
+ }
+
+ return null;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php
new file mode 100644
index 0000000..5ed9149
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php
@@ -0,0 +1,92 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Contracts\Service\Test;
+
+use PHPUnit\Framework\TestCase;
+use Psr\Container\ContainerInterface;
+use Symfony\Contracts\Service\ServiceLocatorTrait;
+
+abstract class ServiceLocatorTest extends TestCase
+{
+ protected function getServiceLocator(array $factories)
+ {
+ return new class($factories) implements ContainerInterface {
+ use ServiceLocatorTrait;
+ };
+ }
+
+ public function testHas()
+ {
+ $locator = $this->getServiceLocator([
+ 'foo' => function () { return 'bar'; },
+ 'bar' => function () { return 'baz'; },
+ function () { return 'dummy'; },
+ ]);
+
+ $this->assertTrue($locator->has('foo'));
+ $this->assertTrue($locator->has('bar'));
+ $this->assertFalse($locator->has('dummy'));
+ }
+
+ public function testGet()
+ {
+ $locator = $this->getServiceLocator([
+ 'foo' => function () { return 'bar'; },
+ 'bar' => function () { return 'baz'; },
+ ]);
+
+ $this->assertSame('bar', $locator->get('foo'));
+ $this->assertSame('baz', $locator->get('bar'));
+ }
+
+ public function testGetDoesNotMemoize()
+ {
+ $i = 0;
+ $locator = $this->getServiceLocator([
+ 'foo' => function () use (&$i) {
+ ++$i;
+
+ return 'bar';
+ },
+ ]);
+
+ $this->assertSame('bar', $locator->get('foo'));
+ $this->assertSame('bar', $locator->get('foo'));
+ $this->assertSame(2, $i);
+ }
+
+ public function testThrowsOnUndefinedInternalService()
+ {
+ if (!$this->getExpectedException()) {
+ $this->expectException('Psr\Container\NotFoundExceptionInterface');
+ $this->expectExceptionMessage('The service "foo" has a dependency on a non-existent service "bar". This locator only knows about the "foo" service.');
+ }
+ $locator = $this->getServiceLocator([
+ 'foo' => function () use (&$locator) { return $locator->get('bar'); },
+ ]);
+
+ $locator->get('foo');
+ }
+
+ public function testThrowsOnCircularReference()
+ {
+ $this->expectException('Psr\Container\ContainerExceptionInterface');
+ $this->expectExceptionMessage('Circular reference detected for service "bar", path: "bar -> baz -> bar".');
+ $locator = $this->getServiceLocator([
+ 'foo' => function () use (&$locator) { return $locator->get('bar'); },
+ 'bar' => function () use (&$locator) { return $locator->get('baz'); },
+ 'baz' => function () use (&$locator) { return $locator->get('bar'); },
+ ]);
+
+ $locator->get('foo');
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/composer.json b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/composer.json
new file mode 100644
index 0000000..cbd491b
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/service-contracts/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "symfony/service-contracts",
+ "type": "library",
+ "description": "Generic abstractions related to writing services",
+ "keywords": ["abstractions", "contracts", "decoupling", "interfaces", "interoperability", "standards"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": "^7.2.5",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Contracts\\Service\\": "" }
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/CHANGELOG.md b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/CHANGELOG.md
new file mode 100644
index 0000000..9aa4a8b
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/CHANGELOG.md
@@ -0,0 +1,7 @@
+CHANGELOG
+=========
+
+4.2.0
+-----
+
+ * added the component
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Exception/ClassNotFoundException.php b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Exception/ClassNotFoundException.php
new file mode 100644
index 0000000..4cebe44
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Exception/ClassNotFoundException.php
@@ -0,0 +1,20 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter\Exception;
+
+class ClassNotFoundException extends \Exception implements ExceptionInterface
+{
+ public function __construct(string $class, \Throwable $previous = null)
+ {
+ parent::__construct(sprintf('Class "%s" not found.', $class), 0, $previous);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Exception/ExceptionInterface.php b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Exception/ExceptionInterface.php
new file mode 100644
index 0000000..adfaed4
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Exception/ExceptionInterface.php
@@ -0,0 +1,16 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter\Exception;
+
+interface ExceptionInterface extends \Throwable
+{
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Exception/NotInstantiableTypeException.php b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Exception/NotInstantiableTypeException.php
new file mode 100644
index 0000000..7ca4884
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Exception/NotInstantiableTypeException.php
@@ -0,0 +1,20 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter\Exception;
+
+class NotInstantiableTypeException extends \Exception implements ExceptionInterface
+{
+ public function __construct(string $type)
+ {
+ parent::__construct(sprintf('Type "%s" is not instantiable.', $type));
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Instantiator.php b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Instantiator.php
new file mode 100644
index 0000000..9fd8cf3
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Instantiator.php
@@ -0,0 +1,94 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter;
+
+use Symfony\Component\VarExporter\Exception\ExceptionInterface;
+use Symfony\Component\VarExporter\Exception\NotInstantiableTypeException;
+use Symfony\Component\VarExporter\Internal\Hydrator;
+use Symfony\Component\VarExporter\Internal\Registry;
+
+/**
+ * A utility class to create objects without calling their constructor.
+ *
+ * @author Nicolas Grekas
+ */
+final class Instantiator
+{
+ /**
+ * Creates an object and sets its properties without calling its constructor nor any other methods.
+ *
+ * For example:
+ *
+ * // creates an empty instance of Foo
+ * Instantiator::instantiate(Foo::class);
+ *
+ * // creates a Foo instance and sets one of its properties
+ * Instantiator::instantiate(Foo::class, ['propertyName' => $propertyValue]);
+ *
+ * // creates a Foo instance and sets a private property defined on its parent Bar class
+ * Instantiator::instantiate(Foo::class, [], [
+ * Bar::class => ['privateBarProperty' => $propertyValue],
+ * ]);
+ *
+ * Instances of ArrayObject, ArrayIterator and SplObjectHash can be created
+ * by using the special "\0" property name to define their internal value:
+ *
+ * // creates an SplObjectHash where $info1 is attached to $obj1, etc.
+ * Instantiator::instantiate(SplObjectStorage::class, ["\0" => [$obj1, $info1, $obj2, $info2...]]);
+ *
+ * // creates an ArrayObject populated with $inputArray
+ * Instantiator::instantiate(ArrayObject::class, ["\0" => [$inputArray]]);
+ *
+ * @param string $class The class of the instance to create
+ * @param array $properties The properties to set on the instance
+ * @param array $privateProperties The private properties to set on the instance,
+ * keyed by their declaring class
+ *
+ * @return object The created instance
+ *
+ * @throws ExceptionInterface When the instance cannot be created
+ */
+ public static function instantiate(string $class, array $properties = [], array $privateProperties = []): object
+ {
+ $reflector = Registry::$reflectors[$class] ?? Registry::getClassReflector($class);
+
+ if (Registry::$cloneable[$class]) {
+ $wrappedInstance = [clone Registry::$prototypes[$class]];
+ } elseif (Registry::$instantiableWithoutConstructor[$class]) {
+ $wrappedInstance = [$reflector->newInstanceWithoutConstructor()];
+ } elseif (null === Registry::$prototypes[$class]) {
+ throw new NotInstantiableTypeException($class);
+ } elseif ($reflector->implementsInterface('Serializable') && (\PHP_VERSION_ID < 70400 || !method_exists($class, '__unserialize'))) {
+ $wrappedInstance = [unserialize('C:'.\strlen($class).':"'.$class.'":0:{}')];
+ } else {
+ $wrappedInstance = [unserialize('O:'.\strlen($class).':"'.$class.'":0:{}')];
+ }
+
+ if ($properties) {
+ $privateProperties[$class] = isset($privateProperties[$class]) ? $properties + $privateProperties[$class] : $properties;
+ }
+
+ foreach ($privateProperties as $class => $properties) {
+ if (!$properties) {
+ continue;
+ }
+ foreach ($properties as $name => $value) {
+ // because they're also used for "unserialization", hydrators
+ // deal with array of instances, so we need to wrap values
+ $properties[$name] = [$value];
+ }
+ (Hydrator::$hydrators[$class] ?? Hydrator::getHydrator($class))($properties, $wrappedInstance);
+ }
+
+ return $wrappedInstance[0];
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Internal/Exporter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Internal/Exporter.php
new file mode 100644
index 0000000..38f7fbf
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/Internal/Exporter.php
@@ -0,0 +1,405 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter\Internal;
+
+use Symfony\Component\VarExporter\Exception\NotInstantiableTypeException;
+
+/**
+ * @author Nicolas Grekas
+ *
+ * @internal
+ */
+class Values
+{
+ public $values;
+
+ public function __construct(array $values)
+ {
+ $this->values = $values;
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/LICENSE b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/LICENSE
new file mode 100644
index 0000000..69d925b
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2018-2020 Fabien Potencier
+
+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.
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/README.md b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/README.md
new file mode 100644
index 0000000..bb13960
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/README.md
@@ -0,0 +1,38 @@
+VarExporter Component
+=====================
+
+The VarExporter component allows exporting any serializable PHP data structure to
+plain PHP code. While doing so, it preserves all the semantics associated with
+the serialization mechanism of PHP (`__wakeup`, `__sleep`, `Serializable`,
+`__serialize`, `__unserialize`).
+
+It also provides an instantiator that allows creating and populating objects
+without calling their constructor nor any other methods.
+
+The reason to use this component *vs* `serialize()` or
+[igbinary](https://github.com/igbinary/igbinary) is performance: thanks to
+OPcache, the resulting code is significantly faster and more memory efficient
+than using `unserialize()` or `igbinary_unserialize()`.
+
+Unlike `var_export()`, this works on any serializable PHP value.
+
+It also provides a few improvements over `var_export()`/`serialize()`:
+
+ * the output is PSR-2 compatible;
+ * the output can be re-indented without messing up with `\r` or `\n` in the data
+ * missing classes throw a `ClassNotFoundException` instead of being unserialized to
+ `PHP_Incomplete_Class` objects;
+ * references involving `SplObjectStorage`, `ArrayObject` or `ArrayIterator`
+ instances are preserved;
+ * `Reflection*`, `IteratorIterator` and `RecursiveIteratorIterator` classes
+ throw an exception when being serialized (their unserialized version is broken
+ anyway, see https://bugs.php.net/76737).
+
+Resources
+---------
+
+ * [Documentation](https://symfony.com/doc/current/components/var_exporter.html)
+ * [Contributing](https://symfony.com/doc/current/contributing/index.html)
+ * [Report issues](https://github.com/symfony/symfony/issues) and
+ [send Pull Requests](https://github.com/symfony/symfony/pulls)
+ in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/VarExporter.php b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/VarExporter.php
new file mode 100644
index 0000000..da9a8d4
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/VarExporter.php
@@ -0,0 +1,114 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\VarExporter;
+
+use Symfony\Component\VarExporter\Exception\ExceptionInterface;
+use Symfony\Component\VarExporter\Internal\Exporter;
+use Symfony\Component\VarExporter\Internal\Hydrator;
+use Symfony\Component\VarExporter\Internal\Registry;
+use Symfony\Component\VarExporter\Internal\Values;
+
+/**
+ * Exports serializable PHP values to PHP code.
+ *
+ * VarExporter allows serializing PHP data structures to plain PHP code (like var_export())
+ * while preserving all the semantics associated with serialize() (unlike var_export()).
+ *
+ * By leveraging OPcache, the generated PHP code is faster than doing the same with unserialize().
+ *
+ * @author Nicolas Grekas
+ */
+final class VarExporter
+{
+ /**
+ * Exports a serializable PHP value to PHP code.
+ *
+ * @param mixed $value The value to export
+ * @param bool &$isStaticValue Set to true after execution if the provided value is static, false otherwise
+ *
+ * @return string The value exported as PHP code
+ *
+ * @throws ExceptionInterface When the provided value cannot be serialized
+ */
+ public static function export($value, bool &$isStaticValue = null): string
+ {
+ $isStaticValue = true;
+
+ if (!\is_object($value) && !(\is_array($value) && $value) && !$value instanceof \__PHP_Incomplete_Class && !\is_resource($value)) {
+ return Exporter::export($value);
+ }
+
+ $objectsPool = new \SplObjectStorage();
+ $refsPool = [];
+ $objectsCount = 0;
+
+ try {
+ $value = Exporter::prepare([$value], $objectsPool, $refsPool, $objectsCount, $isStaticValue)[0];
+ } finally {
+ $references = [];
+ foreach ($refsPool as $i => $v) {
+ if ($v[0]->count) {
+ $references[1 + $i] = $v[2];
+ }
+ $v[0] = $v[1];
+ }
+ }
+
+ if ($isStaticValue) {
+ return Exporter::export($value);
+ }
+
+ $classes = [];
+ $values = [];
+ $states = [];
+ foreach ($objectsPool as $i => $v) {
+ list(, $classes[], $values[], $wakeup) = $objectsPool[$v];
+ if (0 < $wakeup) {
+ $states[$wakeup] = $i;
+ } elseif (0 > $wakeup) {
+ $states[-$wakeup] = [$i, array_pop($values)];
+ $values[] = [];
+ }
+ }
+ ksort($states);
+
+ $wakeups = [null];
+ foreach ($states as $k => $v) {
+ if (\is_array($v)) {
+ $wakeups[-$v[0]] = $v[1];
+ } else {
+ $wakeups[] = $v;
+ }
+ }
+
+ if (null === $wakeups[0]) {
+ unset($wakeups[0]);
+ }
+
+ $properties = [];
+ foreach ($values as $i => $vars) {
+ foreach ($vars as $class => $values) {
+ foreach ($values as $name => $v) {
+ $properties[$class][$name][$i] = $v;
+ }
+ }
+ }
+
+ if ($classes || $references) {
+ $value = new Hydrator(new Registry($classes), $references ? new Values($references) : null, $properties, $value, $wakeups);
+ } else {
+ $isStaticValue = true;
+ }
+
+ return Exporter::export($value);
+ }
+}
diff --git a/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/composer.json b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/composer.json
new file mode 100644
index 0000000..6ccfc63
--- /dev/null
+++ b/user/plugins/admin-addon-user-manager/vendor/symfony/var-exporter/composer.json
@@ -0,0 +1,36 @@
+{
+ "name": "symfony/var-exporter",
+ "type": "library",
+ "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code",
+ "keywords": ["export", "serialize", "instantiate", "hydrate", "construct", "clone"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": "^7.2.5"
+ },
+ "require-dev": {
+ "symfony/var-dumper": "^4.4|^5.0"
+ },
+ "autoload": {
+ "psr-4": { "Symfony\\Component\\VarExporter\\": "" },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "minimum-stability": "dev",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ }
+}
diff --git a/user/plugins/admin/.editorconfig b/user/plugins/admin/.editorconfig
new file mode 100644
index 0000000..3b95e6d
--- /dev/null
+++ b/user/plugins/admin/.editorconfig
@@ -0,0 +1,17 @@
+# EditorConfig is awesome: http://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+# Unix-style newlines with a newline ending every file
+[*]
+charset = utf-8
+end_of_line = lf
+trim_trailing_whitespace = true
+insert_final_newline = true
+indent_style = space
+indent_size = 4
+
+# 2 space indentation
+[*.{yaml,.yml}]
+indent_size = 2
diff --git a/user/plugins/admin/.gitattributes b/user/plugins/admin/.gitattributes
new file mode 100644
index 0000000..e3cf70c
--- /dev/null
+++ b/user/plugins/admin/.gitattributes
@@ -0,0 +1,8 @@
+# Linguist Normalizer
+*.yaml linguistic-language=PHP
+*.twig linguistic-language=PHP
+**/gulpfile.js linguist-vendored
+**/webpack.conf.js linguist-vendored
+**/js/*.js linguist-vendored
+**/js/*.json linguist-vendored
+**/css-compiled/*.css linguist-vendored
diff --git a/user/plugins/admin/.github/FUNDING.yml b/user/plugins/admin/.github/FUNDING.yml
new file mode 100644
index 0000000..e84f52b
--- /dev/null
+++ b/user/plugins/admin/.github/FUNDING.yml
@@ -0,0 +1,8 @@
+# These are supported funding model platforms
+
+github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+patreon: # Replace with a single Patreon username
+open_collective: grav
+ko_fi: # Replace with a single Ko-fi username
+tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+custom: # Replace with a single custom sponsorship URL
diff --git a/user/plugins/admin/.gitignore b/user/plugins/admin/.gitignore
new file mode 100644
index 0000000..fcd7381
--- /dev/null
+++ b/user/plugins/admin/.gitignore
@@ -0,0 +1,15 @@
+themes/grav/.sass-cache
+.DS_Store
+crowdin.yaml
+
+# Node Modules
+**/node_modules/**
+themes/grav/js/admin.js
+themes/grav/js/vendor.js
+themes/grav/js/*.map
+.idea
+
+tests/_output/*
+tests/_support/_generated/*
+tests/cache/*
+tests/error.log
diff --git a/user/plugins/admin/CHANGELOG.md b/user/plugins/admin/CHANGELOG.md
new file mode 100644
index 0000000..1a078d6
--- /dev/null
+++ b/user/plugins/admin/CHANGELOG.md
@@ -0,0 +1,1756 @@
+# v1.9.15
+## 06/08/2020
+
+1. [](#bugfix)
+ * Support markdown in `fieldset.text` [#2934](https://github.com/getgrav/grav/issues/2934)
+ * Fix data URLs in avatar images [#1889](https://github.com/getgrav/grav/issues/1889)
+ * Fix for deleting files in plugin configurations
+
+# v1.9.14
+## 04/27/2020
+
+1. [](#improved)
+ * Added `slug` and `type` to blueprints
+1. [](#bugfix)
+ * Support markdown in `fieldset.text` [#2934](https://github.com/getgrav/grav/issues/2934)
+
+# v1.9.13
+## 03/05/2020
+
+1. [](#improved)
+ * Updated vendor libs
+1. [](#bugfix)
+ * Fixed toggleable buttons no longer holding false state [form#406](ttps://github.com/getgrav/grav-plugin-form/issues/406)
+
+# v1.9.12
+## 12/04/2019
+
+1. [](#bugfix)
+ * Fixed saving configuration in PHP 7.4
+
+# v1.9.11
+## 11/06/2019
+
+1. [](#improved)
+ * Added new "secure delete" functionality [#1752](https://github.com/getgrav/grav-plugin-admin/issues/1752)
+ * Center text logo [#1751](https://github.com/getgrav/grav-plugin-admin/issues/1751)
+ * Added required span to editor field [#1748](https://github.com/getgrav/grav-plugin-admin/issues/1748)
+ * Warn users if JS is disabled [#1722](https://github.com/getgrav/grav-plugin-admin/issues/1722)
+ * Added target rule to quick links [#1518](https://github.com/getgrav/grav-plugin-admin/issues/1518)
+1. [](#bugfix)
+ * Fixed `Badly encoded JSON data` warning when uploading files [grav#2663](https://github.com/getgrav/grav/issues/2663)
+ * Fixed `accept` for SVG in `file` uploaders [#1732](https://github.com/getgrav/grav-plugin-admin/issues/1732)
+
+# v1.9.10
+## 09/19/2019
+
+1. [](#bugfix)
+ * Fixed `Badly encoded JSON data` warning when uploading files [grav#2663](https://github.com/getgrav/grav/issues/2663)
+
+# v1.9.9
+## 08/21/2019
+
+1. [](#bugfix)
+ * Fixed regression with files in admin not allowing types other than images [#1737](https://github.com/getgrav/grav-plugin-admin/issues/1737)
+ * Fixed preview link for non-images files in **Page Media** [#1727](https://github.com/getgrav/grav-plugin-admin/issues/1727)
+
+# v1.9.8
+## 08/11/2019
+
+1. [](#improved)
+ * Better support for `array` field into `list` field
+ * Attach `_list_index` to fields within list items so that the index/key is available
+1. [](#bugfix)
+ * Fixed 2FA regenerate for Flex Users
+ * Added missing closing in language loops
+ * Fixed issue with nested `list` fields both utilizing the custom `key` functionality
+ * Fixed issue with `array` field nested in `list` that were losing their index order when the list reordered
+ * Fixed file form field failing resolution checks in certain circumstances
+ * Fixed issue with deleting files in config based YAML files
+
+# v1.9.7
+## 06/21/2019
+
+1. [](#bugfix)
+ * Fixed issue with charts in dashboard where label would cut off [#1700](https://github.com/getgrav/grav-plugin-admin/issues/1700)
+ * Resetting a user's password clears the user's site access [grav#2528](https://github.com/getgrav/grav/issues/2528)
+ * Fixed issue with permissions toggle [#1702](https://github.com/getgrav/grav-plugin-admin/issues/1702)
+
+# v1.9.6
+## 06/15/2019
+
+1. [](#bugfix)
+ * Fixed regression issue with `parents_levels` defaulting to `2`
+
+# v1.9.5
+## 06/14/2019
+
+1. [](#improved)
+ * Display error message if GPM class fails to initialize
+ * Better append/prepend logic that was breaking some layouts
+ * Default `backups` to an array if used outside of tools
+ * PSR 7 fixes
+
+# v1.9.4
+## 05/09/2019
+
+1. [](#new)
+ * Added support for `field.copy-to-clipboard` on Text input fields
+1. [](#improved)
+ * Only invalidate cache on creating new/deleting page to speed up the recovery
+ * Updated language strings from https://crowdin.com/project/grav-admin
+ * Use `plugins://` stream rather than `user://plugins` [#1674](https://github.com/getgrav/grav-plugin-admin/issues/1674)
+1. [](#bugfix)
+ * Fixed admin cache to detect moved and deleted pages
+ * Fixed avatar URLs with `?` in them being broken
+ * Fixed issue saving page with language that was not exactly `2` or `5` chars long [#1667](https://github.com/getgrav/grav-plugin-admin/issues/1667)
+ * Fixed admin not detecting any existing users when Flex users are being used
+ * Fixed issue with append/prepend not respecting `size:`
+ * Fixed issue with `unset` on file fields [#1427](https://github.com/getgrav/grav/issues/1427), [#1670](https://github.com/getgrav/grav/issues/1670), [#1982](https://github.com/getgrav/grav/issues/1982)
+
+# v1.9.3
+## 04/22/2019
+
+1. [](#new)
+ * Added a new **YAML Linter** report to the `Tools - Reports` section
+1. [](#improved)
+ * Updated package.json scripts to properly use gulp compiler
+
+# v1.9.2
+## 04/15/2019
+
+1. [](#bugfix)
+ * Fix for homepage admin preview [#2426](https://github.com/getgrav/grav/issues/2426)
+ * Uploaded Avatar removed from user's yaml when editing the user [#1647](https://github.com/getgrav/grav-plugin-admin/issues/1647)
+
+# v1.9.1
+## 04/13/2019
+
+1. [](#bugfix)
+ * Fix for Page saving issues [#1648](https://github.com/getgrav/grav-plugin-admin/issues/1648)
+ * Remove status message when picking folder for move [#1650](https://github.com/getgrav/grav-plugin-admin/issues/1650)
+
+# v1.9.0
+## 04/11/2019
+
+1. [](#new)
+ * New `Scheduler` configuration panel in tools
+ * New `Backups` configuration panel in tools
+ * New `Cache::purge()` option in cache drop-down to clear out old cache only
+ * New `Tools - Reports` section with event `onAdminGenerateReports()` for 3rd party plugin support
+ * Added support for the new `Flex User` object
+ * Allow admin forms to use `Form` classes
+ * Added new `Logs` section to tools to allow quick view of Grav log files
+1. [](#improved)
+ * Improved the UI for the Parent Page Route dropdown when adding a new Page / Folder
+ * Use `$grav['accounts']` instead of `$grav['users']`
+ * Improved image background overlay and tools
+ * Better unauthorized user rendering
+ * Update all Form classes to rely on `PageInterface` instead of `Page` class
+ * Removed `media.upload_limit` references
+ * Improve error when upload exceeds `upload_max_filesize`
+ * Delegate Dropzone for checking maximum file size and avoid uploading if not necessary
+ * Low level unauthorized user handling in `base-root.html.twig`
+ * Refactored "NewsFeeds" and "Notifications" for better performance and to address CORS issues
+ * Flex user profile now uses Flex Form
+ * Moved dashboard `notifications` logic to server-side for increased performance (1 request instead of 3)
+ * Refactored feeds logic for better performance
+ * Better logic for delete action to support Ajax. Fixes Flex lists
+ * Cleanly handle session corruption due to changing Flex object types
+ * Implemented [ForkAwesome](https://forkawesome.github.io/Fork-Awesome/) and removed FontAwesome + LineAwesome
+ * Various default admin theme improvements and cleanup
+ * Make new System Config layout responsive [#1579](https://github.com/getgrav/grav-plugin-admin/issues/1579)
+ * Homepage link should be `https://` [#1564](https://github.com/getgrav/grav-plugin-admin/issues/1564)
+ * Improve lang string to describe XSS security settings [#1566](https://github.com/getgrav/grav-plugin-admin/issues/1566)
+ * Take admin setting for 2FA into account when showing user 2FA badge [#1568](https://github.com/getgrav/grav-plugin-admin/issues/1568)
+ * Moved `ignore` and `key` field into form plugin
+ * Improved usability of `System` configuration blueprint with side-tabs
+ * Cleaned up UI in `Scheduler` tools page
+ * Updated languages
+1. [](#bugfix)
+ * Fixed user edit links if Flex Objects plugin is installed but user isn't Flex User
+ * Fixed deprecated `sameas()` Twig test
+ * Regression: Fixed lost user access when saving user profile without super user permissions [#1639](https://github.com/getgrav/grav-plugin-admin/issues/1639)
+ * Fixed `Page.menu` displaying in edit view rather than `Page.title` [#1642](https://github.com/getgrav/grav-plugin-admin/issues/1642)
+ * Regression from beta.8: Deleting files other than from plugins/themes fail on error
+ * Fixed issue with Safari browser and blueprint fields with `toggleable: true` [#1643](https://github.com/getgrav/grav-plugin-admin/issues/1643)
+ * Incorrect 2FA lang code [#1618](https://github.com/getgrav/grav-plugin-admin/issues/1618)
+ * Fixed potential undefined property in `onPageNotFound` event handling
+ * Proper fix for `vUndefined` when updating plugins/themes
+ * Text in Tab Tools/Direct install disappears [#1613](https://github.com/getgrav/grav-plugin-admin/issues/1613)
+ * Fallback to page `slug` in Pages list if title is empty [grav#2267](https://github.com/getgrav/grav/issues/2267)
+ * Fixes backup button issues with `;` param separator [#1602](https://github.com/getgrav/grav-plugin-admin/issues/1602) [#1502](https://github.com/getgrav/grav-plugin-admin/issues/1502)
+ * Set default state for `show_modular` to `true` [#1599](https://github.com/getgrav/grav-plugin-admin/issues/1599)
+ * Removed `tabs`, `tab`, and `toggle` fields as they are now in Form plugin
+ * Fix issue with new page always showing modular page templates [#1573](https://github.com/getgrav/grav-plugin-admin/issues/1573)
+ * Fixed issue deleting files in plugins/themes/config
+ * Fixed array support in admin languages, e.g. `DAYS_OF_THE_WEEK`
+ * Fixed user login / remember me triggering before admin gets initialized
+ * Fixed a bug when deleting files via AJAX
+ * Fixed error page not to be the frontend version
+ * Added `merge_items` option for `field.selectize` to allow storing custom items [#1461](https://github.com/getgrav/grav-plugin-admin/issues/1461)
+ * Better handling of unset in uploaded files [#1427](https://github.com/getgrav/grav-plugin-admin/issues/1427)
+ * Prefix Backup/Scheduler titles with `Tools`
+ * Regression: Media settings have bad layout [#1529](https://github.com/getgrav/grav-plugin-admin/issues/1529)
+ * Fixed Direct Install Uploader, failing to validate the uploaded files
+ * Regression: Editing interface does not keep settings properly without manual intervention on each edit [#1527](https://github.com/getgrav/grav-plugin-admin/issues/1527)
+ * Removed duplicate language strings
+ * Fixed default `job_at` so it does not fail if missing
+ * Minor JS group `bottom` fix
+
+# v1.8.20
+## 03/20/2019
+
+1. [](#improved)
+ * Added security field to column [#1622](https://github.com/getgrav/grav-plugin-admin/pull/1622)
+
+# v1.8.19
+## 02/13/2019
+
+1. [](#bugfix)
+ * Moved `show_modular` to proper place - Doh! [grav#2362](https://github.com/getgrav/grav/issues/2362)
+
+# v1.8.18
+## 02/12/2019
+
+1. [](#bugfix)
+ * Set default value for `show_modular` [grav#2362](https://github.com/getgrav/grav/issues/2362)
+
+# v1.8.17
+## 02/07/2019
+
+1. [](#improved)
+ * Improved Grav Core installer/updater to run installer script (if available)
+ * Added `unauthorized.html.twig` file that was missing [#1609](https://github.com/getgrav/grav-plugin-admin/pull/1609)
+1. [](#bugfix)
+ * Fixed direct install deleting backups and logs if used with full Grav package instead of with update package
+
+# v1.8.16
+## 01/25/2019
+
+1. [](#improved)
+ * IP pseudonymization for rate limiter [#1589](https://github.com/getgrav/grav-plugin-admin/pull/1589)
+ * Add option to hide modular pages in parent select [#1571](https://github.com/getgrav/grav-plugin-admin/pull/1571)
+ * Added `admin.tools` permission [#1550](https://github.com/getgrav/grav-plugin-admin/pull/1550)
+1. [](#bugfix)
+ * Fixed calendar js module not properly loading for datetime field [#1581](https://github.com/getgrav/grav-plugin-admin/issues/1581)
+ * Fixed deleting file when using file field type [#1558](https://github.com/getgrav/grav-plugin-admin/issues/1558)
+ * Unset state from user if not super or user admin
+
+# v1.8.15
+## 12/14/2018
+
+1. [](#improved)
+ * Fire `onAdminSave()` event during `AdminController::taskSaveAs()` [#1544](https://github.com/getgrav/grav-plugin-admin/issues/1544)
+1. [](#bugfix)
+ * Clean user post to ensure dynamically added form fields are not saved
+
+# v1.8.14
+## 11/12/2018
+
+1. [](#bugfix)
+ * Fixed Grav core update potentially spinning forever because of an error which happens after a successful upgrade
+ * Saving in expert mode can cause `undefined index: header` error [#1537](https://github.com/getgrav/grav-plugin-admin/issues/1537)
+
+# v1.8.13
+## 11/05/2018
+
+1. [](#new)
+ * Added new `|nested()` Twig filter to access array objects with dot notation syntax
+1. [](#bugfix)
+ * Fixed issue with complex lists structure and nested dot-notation [admin#2236](https://github.com/getgrav/grav/issues/2236)
+
+# v1.8.12
+## 10/24/2018
+
+1. [](#improved)
+ * Updated various lang strings
+ * Removed duplicate lang strings
+1. [](#bugfix)
+ * Fix XSS checking when empty content [#1533](https://github.com/getgrav/grav-plugin-admin/issues/1533)
+ * Fix DirectInstall not working [#1535](https://github.com/getgrav/grav-plugin-admin/issues/1535)
+
+# v1.8.11
+## 10/08/2018
+
+1. [](#improved)
+ * Change usage of basename where possible [#1480](https://github.com/getgrav/grav-plugin-admin/pull/1480)
+ * Improved filename validation (requires Grav 1.5.3)
+ * Updated various lang codes
+1. [](#bugfix)
+ * File Uploads: Do not trust mimetype sent by the browser
+ * Fixed file extension detection
+ * Fix for HTML entities in page slug [#1524](https://github.com/getgrav/grav-plugin-admin/issues/1524)
+ * Fix for port in backup download links [#1521](https://github.com/getgrav/grav-plugin-admin/issues/1521)
+
+# v1.8.10
+## 10/01/2018
+
+1. [](#new)
+ * IMPORTANT: Non `admin.super` users are now subject to XSS validation in Page content. Configurable via Configuration / Security
+ * New XSS content warnings and integration into page save
+ * Added new event `onAdminPage()` which allows plugins to customize `Page` object in `$event['page']`
+1. [](#improved)
+ * Use `Url:post()` to get the `$_POST` variable (allows common security checks/filtering for the POST data)
+ * Requires Grav 1.5.2
+1. [](#bugfix)
+ * Fixed redirect to correct URL after failed login
+ * Fixed issue in `filepicker` where missing images would cause a loop to try to load them
+ * Twig 2 compatibility fixes for macros
+ * Updated `composer.json` to better match Grav 1.5
+ * Remove `package-lock.json` as it was referencing an insecure JS package
+
+# v1.8.9
+## 08/23/2018
+
+1. [](#improved)
+ * Make order field to use context, not data
+ * Switched to new Grav Yaml class to support Native + Fallback YAML libraries
+ * Minor fix for `file` thumbnails display
+ * Requires Grav 1.5.1
+
+# v1.8.8
+## 08/17/2018
+
+1. [](#improved)
+ * Support URI Params and Query attributes in Login redirect
+ * Added support for textarea value type in `array` field
+ * Added some new lang strings for Grav 1.5.0
+1. [](#bugfix)
+ * Support params and querystring in login redirect
+ * Added field name nesting with tab field
+
+# v1.8.7
+## 07/31/2018
+
+1. [](#bugfix)
+ * Fix for deleting 'extra' media files [grav#2100](https://githubcom/getgrav/grav/issues/2100)
+
+# v1.8.6
+## 07/13/2018
+
+1. [](#bugfix)
+ * Force `html` for markdown preview [grav#2066](https://github.com/getgrav/grav/issues/2066)
+ * Add missing `authorizeTask()` checks in controller [#1483](https://github.com/getgrav/grav/issues/1483)
+ * Add support for `force_ssl` to admin URLs [#1479](https://github.com/getgrav/grav-plugin-admin/issues/1479)
+
+# v1.8.5
+## 06/20/2018
+
+1. [](#bugfix)
+ * Fixed broken folder attribute on filepicker [#1465](https://github.com/getgrav/grav-plugin-admin/issues/1465)
+ * Added translation for system.session.initialize
+ * Slight updates on new translation strings
+
+# v1.8.4
+## 06/11/2018
+
+1. [](#improved)
+ * Including EXIF JS library in the modules dependencies to fix orientation when uploading images
+1. [](#bugfix)
+ * Initialize session on setup [#1451](https://github.com/getgrav/grav-plugin-admin/issues/1451)
+ * Force a `null` order when empty in the post request
+ * Fixed some 2FA form styling issues
+
+# v1.8.3
+## 05/31/2018
+
+1. [](#new)
+ * Added support for selectize plugins as options in the selectize field
+1. [](#bugfix)
+ * Fixed deep linking in admin after login [#1456](https://github.com/getgrav/grav-plugin-admin/issues/1456)
+ * Fixed Undefined property: `stdClass::$image` in v1.8.2 [#1454](https://github.com/getgrav/grav-plugin-admin/issues/1454)
+ * Pass media order when calling `task:listmedia`
+
+# v1.8.2
+## 05/24/2018
+
+1. [](#new)
+ * Added custom object support for filepicker field
+ * Don't allow saving of a user with no local account file
+ * Controls for `list` field were not in sync between top and bottom
+1. [](#improved)
+ * More subtle `fieldset` styling
+1. [](#bugfix)
+ * Check if `$object->blueprints()` exists in `onAdminAfterSave`
+ * When creating first user, check `admin.login` not `site.login`
+ * Fix admin login redirects for multisite setups
+ * Fixed issue with filepicker field where images wouldn't properly merge with the current value if in a page header
+ * Fixed media delete for streams
+
+# v1.8.1
+## 05/15/2018
+
+1. [](#improved)
+ * use SHA1 hashing of IP addressed to support GDPR rules [#1436](https://github.com/getgrav/grav-plugin-admin/pull/1436)
+1. [](#bugfix)
+ * Fixed 2FA form showing up even if user has not turned on the feature [#1442](https://github.com/getgrav/grav-plugin-admin/issues/1442)
+ * Fixed previews of images in Pagemedia field not properly URI encoded [#1438](https://github.com/getgrav/grav-plugin-admin/issues/1438)
+
+# v1.8.0
+## 05/11/2018
+
+1. [](#new)
+ * Moved 2FA authentication to login plugin
+ * Admin login now uses login plugin events
+ * Added new decoupled `pagemedia` field that is no longer tied to just pages
+ * Updated plugin dependencies (Grav >= 1.4.4, Form >=2.14.0, Login >=2.7.0, Email >=2.7.0)
+1. [](#improved)
+ * Added support for JavaScript `bottom` block [#1425](https://github.com/getgrav/grav-plugin-admin/pull/1425)
+ * Added better typography styling for blockquote and markdown in `display` field
+ * Vendor updates
+1. [](#bugfix)
+ * Added missing MarkdownExtra strings [#1385](https://github.com/getgrav/grav-plugin-admin/pull/1385)
+ * Updated `blueprints.yaml` with missing `step` attribute [#1415](https://github.com/getgrav/grav-plugin-admin/pull/1415)
+ * Fixed preview target setting [#1430](https://github.com/getgrav/grav-plugin-admin/pull/1430)
+ * Added new modular string [#1433](https://github.com/getgrav/grav-plugin-admin/pull/1433)
+ * Fixed Firefox issue with the Regenerate button for 2FA. Forcing the page to reload
+ * Fixed jumpiness behavior for Regenerate button when on active state.
+ * Prevent the prompt for unsaved state when Regenerating a 2FA code and trying to reload/leave the page.
+
+# v1.7.4
+## 04/02/2018
+
+1. [](#bugfix)
+ * Fixed a bug for page copy caused by last release [#1409](https://github.com/getgrav/grav-plugin-admin/pull/1409)
+ * Fixed collapsible `list` option [#1410](https://github.com/getgrav/grav-plugin-admin/pull/1410)
+ * Fixed a minor typo in a label [#1397](https://github.com/getgrav/grav-plugin-admin/pull/1397)
+
+# v1.7.3
+## 04/01/2018
+
+1. [](#new)
+ * Implemented Resize Media and Resolution ('resizeWidth', 'resizeHeight', 'resizeQuality', 'resolution')
+ * Updated Dropzone to latest
+1. [](#bugfix)
+ * Implemented workaround for required text fields [#1390](https://github.com/getgrav/grav-plugin-admin/issues/1390)
+ * Fixed highlight color in Firefox [getgrav/grav#1949](https://github.com/getgrav/grav/issues/1949)
+ * Fix for bad redirect on saving simplesearch (possibly others)
+
+# v1.7.2
+## 03/21/2018
+
+1. [](#improved)
+ * Table CSS improvements for use in 3rd party plugins
+ * Translatable `add_modals` button labels [#1388](https://github.com/getgrav/grav-plugin-admin/issues/1388)
+ * Check for `SHIFT` key on editor save shortcut [#1383](https://github.com/getgrav/grav-plugin-admin/issues/1383)
+ * Fixed User permissions responsive UI [#1379](https://github.com/getgrav/grav-plugin-admin/issues/1379)
+ * Optimization to stop admin for looking for pages in disabled plugins
+ * Added configuration option to choose if you want to use new 'inline' preview or `new tab'
+1. [](#bugfix)
+ * Fix redirect bug when changing admin route to `admin-*`
+ * Changed Twig `|count` to `|length` filter [#1391](https://github.com/getgrav/grav-plugin-admin/issues/1391)
+ * Fix for page preview when `HTTP_REFERRER` is not set [grav#1930](https://github.com/getgrav/grav/issues/1930)
+
+# v1.7.1
+## 03/11/2018
+
+1. [](#new)
+ * New built-in page preview system
+1. [](#improved)
+ * Added `CTRL+K` / `CMD+K` shortcuts for editor links [#1279](https://github.com/getgrav/grav-plugin-admin/issues/1279)
+1. [](#bugfix)
+ * Automatically redirect to new `admin_route` after changing it [#1371](https://github.com/getgrav/grav-plugin-admin/issues/1371)
+ * Remove bad-shadows on alerts
+ * Fixed notifications titles not html escaped [#1272](https://github.com/getgrav/grav-plugin-admin/issues/1272)
+ * Fixed extra horizontal scrollbar with `Editor` field
+ * Fixed `mediapicker` field in lists [#1369](https://github.com/getgrav/grav-plugin-admin/issues/1369)
+
+# v1.7.0
+## 03/09/2018
+
+1. [](#new)
+ * Added styling and lang for **Route Overrides** in the default page blueprint
+ * Added clear cache permanently to quick-tray [#1353](https://github.com/getgrav/grav-plugin-admin/issues/1353)
+1. [](#improved)
+ * Added option to toggle between `line-awesome` and `font-awesome` icon sets [#1334](https://github.com/getgrav/grav-plugin-admin/issues/1334)
+ * Added preview from page list view [#1250](https://github.com/getgrav/grav-plugin-admin/pull/1250)
+ * Added `Add` plugins button to plugins details page [#1352](https://github.com/getgrav/grav-plugin-admin/pull/1352)
+ * Added support for `default` and `options` fields in taxonomy field [#1364](https://github.com/getgrav/grav-plugin-admin/issues/1364)
+ * Added support to limit parent field levels [#1298](https://github.com/getgrav/grav-plugin-admin/issues/1298)
+1. [](#bugfix)
+ * Fixed issue with custom logo text overlapping the sidebar toggle [#1334](https://github.com/getgrav/grav-plugin-admin/issues/1334)
+ * Fixed issues with minimum PHP versions in resource upgrades
+ * Fixed issue with default lang translation in admin [#1361](https://github.com/getgrav/grav-plugin-admin/issues/1361)
+ * Typos in `Tools` -> `Direct Install` page [#1345](https://github.com/getgrav/grav-plugin-admin/issues/1345)
+ * Fixed bug with frontmatter being killed when in `Expert Mode` [#1354](https://github.com/getgrav/grav-plugin-admin/issues/1354)
+
+# v1.7.0-rc.3
+## 02/15/2018
+
+1. [](#improved)
+ * Tab optimization with fixes for 'onpage' tabs
+ * Stopped Chrome from auto-completing admin user profile form [grav#1847](https://github.com/getgrav/grav/issues/1847)
+ * Added a fixed `ga-theme-17x` body class to help styling compatibility
+ * Outputs an iterable field as a string if `yaml: true` or `validate: type: yaml` set in blueprint
+1. [](#bugfix)
+ * Rolled back JS to known working versions [#1323](https://github.com/getgrav/grav-plugin-admin/issues/1323)
+ * Fixed missing translation in order field [#1324](https://github.com/getgrav/grav-plugin-admin/issues/1324)
+ * Fixed UI issue with last drop-down in button group [1325](https://github.com/getgrav/grav-plugin-admin/issues/1325)
+ * Fixed fieldset field outdated rendering [#1313](https://github.com/getgrav/grav-plugin-admin/issues/1313)
+
+# v1.7.0-rc.2
+## 01/24/2018
+
+1. [](#new)
+ * Moved to LineAwesome icons rather than FontAwesome (still compatible w/FA 4.7.0)
+1. [](#improved)
+ * Simplified open/close nav button
+ * Tidied Tools panel and added translations
+ * Tooltip and new icon for site preview
+ * Updated JS library dependencies
+ * Changed CodeMirror editor to use sans-serif font for readability
+1. [](#bugfix)
+ * Fixed z-index issue in fullscreen mode [#1317](https://github.com/getgrav/grav-plugin-admin/issues/1317)
+
+# v1.7.0-rc.1
+## 01/22/2018
+
+1. [](#new)
+ * Added support for markdown in all form fields for `label`, `help`, and `description` when `markdown: true` is set on field
+ * Changed "made by" to Trilby Media from RocketTheme
+1. [](#improved)
+ * Lightened tabs in new theme
+ * Sort languages by key [#1303](https://github.com/getgrav/grav-plugin-admin/issues/1303)
+ * Add limit to Parent Levels [#1298](https://github.com/getgrav/grav-plugin-admin/pull/1298)
+1. [](#bugfix)
+ * Fixed alignment issue with language drop-down
+ * Fixed a z-index issue with fullscreen editor [#1302](https://github.com/getgrav/grav-plugin-admin/issues/1302)
+ * Fixed missing background on register [#1307](https://github.com/getgrav/grav-plugin-admin/issues/1307)
+ * Fixed some style issues with field descriptions
+ * Fixed an issue with `File` field losing download size setting
+ * Fixed distorted thumbnails in `File` field by using `object-fit: cover`
+
+# v1.7.0-beta.1
+## 12/29/2017
+
+1. [](#new)
+ * New lighter-and-tighter admin theme developed
+1. [](#improved)
+ * Added simple value support for list field type
+ * Added checks to automatically hide collapse buttons when there's only single value in list type
+
+# v1.6.7
+## 12/05/2017
+
+1. [](#new)
+ * Logout of admin goes straight to login form with a message (that then fades out)
+ * Added `sl`, `id`, `he`, `eu`, `et` languages
+1. [](#improved)
+ * Added code to use new `GPM::loadRemoteGrav` if it exists in Gav [grav#1746](https://github.com/getgrav/grav/pull/1746)
+ * Add vertical style for order field [#1253](https://github.com/getgrav/grav-plugin-admin/pull/1253)
+ * Added classes to pagemedia field [#1274](https://github.com/getgrav/grav-plugin-admin/issues/1274)
+ * Fixed selectize field not properly updating value when `option` is provided [#1236](https://github.com/getgrav/grav-plugin-admin/pull/1236)
+ * Tab layout tweaks
+ * Updated all language files with latest from [Crowdin](https://crowdin.com/project/grav-admin)
+1. [](#bugfix)
+ * Manual image metadata can now display in pagemedia when auto-generation is disabled [#1275](https://github.com/getgrav/grav-plugin-admin/issues/1275)
+ * Removed broken `home.hide_in_urls` code in `AdminBaseController::save()` that was throwing move errors
+ * Security fix to ensure file uploads are not manipulated mid-post - thnx @FLH!
+
+# v1.6.6
+## 10/27/2017
+
+1. [](#new)
+ * Fixed issue where sortable media in expert mode would reset frontmatter [#1252](https://github.com/getgrav/grav-plugin-admin/issues/1252)
+
+# v1.6.5
+## 10/26/2017
+
+1. [](#new)
+ * Added ability to **order** page media (requires latest Grav update)
+
+# v1.6.4
+## 10/11/2017
+
+1. [](#improved)
+ * Use system PHP size for upload limit rather than `system.media.upload_limit` or `file.filesize` plugin options
+1. [](#bugfix)
+ * Fixed Dropzone timeout to address slow internet connections [#1239](https://github.com/getgrav/grav-plugin-admin/pull/1239)
+
+# v1.6.3
+## 10/02/2017
+
+1. [](#bugfix)
+ * Fixed chart labels not parsing HTML [#1234](https://github.com/getgrav/grav-plugin-admin/issues/1234)
+
+# v1.6.2
+## 09/29/2017
+
+1. [](#improved)
+ * Removed extraneous files in vendor folder for smaller download package
+
+# v1.6.1
+## 09/29/2017
+
+1. [](#improved)
+ * Added support for Latin Extended fonts [#1211](https://github.com/getgrav/grav-plugin-admin/pull/1221)
+ * Added collapsible attribute to lists [#1231](https://github.com/getgrav/grav-plugin-admin/pull/1231)
+1. [](#bugfix)
+ * Fix editor not clickable in list field [#1224](https://github.com/getgrav/grav-plugin-admin/pull/1124)
+ * Updated Google Font URLs to always connect over HTTPS. [#1106](https://github.com/getgrav/grav-plugin-admin/pull/1106)
+ * Fixed fieldset field not allowing to properly save when contained within a list [#1225](https://github.com/getgrav/grav-plugin-admin/issues/1225)
+ * Fixed Video markdown syntax when drag & dropping in the content editor [#1160](https://github.com/getgrav/grav-plugin-admin/issues/1160)
+ * Fixed headers drop-down in editor to properly align
+ * Fixed fields not working in Microsoft Edge with Selectize.js [#1222](https://github.com/getgrav/grav-plugin-admin/pull/1222)
+ * Replaced a left-over "is empty" check [#1232](https://github.com/getgrav/grav-plugin-admin/pull/1232)
+ * Fixed headers drop-down in editor to align properly
+
+
+# v1.6.0
+## 09/07/2017
+
+1. [](#new)
+ * **Added 2-Factor Authentication support to the admin!**
+ * **Added rate-limiting for "failed login attempts" and "forgot password"**
+1. [](#improved)
+ * Revamped the toggle switch CSS so it's more flexible and works better [#1198](https://github.com/getgrav/grav-plugin-admin/issues/1198)
+ * Improved toggle/button alignment on Page edit view
+1. [](#bugfix)
+ * Fixed an issue where icon-picker style was hiding field elements [#1199](https://github.com/getgrav/grav-plugin-admin/issues/1199)
+ * Fixed https -> http redirect issue [#1195](https://github.com/getgrav/grav-plugin-admin/issues/1195)
+ * Also check `/.` for home route [#1191](https://github.com/getgrav/grav-plugin-admin/issues/1191)
+ * Fixed administration being broken in multi-site environments with plugin overrides
+ * Fixed lang-switcher broken in MS Edge browser [#1213](https://github.com/getgrav/grav-plugin-admin/pull/1213)
+ * Added custom `form_id` attribute for modal forms [#1216](https://github.com/getgrav/grav-plugin-admin/issues/1216)
+ * Fixed partially cropped line in Markdown editor for MS Edge/Firefox [#1219](https://github.com/getgrav/grav-plugin-admin/pull/1219)
+ * Downgraded Babel libraries to v6.x for compatibility with webpack [#1218](https://github.com/getgrav/grav-plugin-admin/pull/1218)
+
+# v1.5.2
+## 08/16/2017
+
+1. [](#new)
+ * Added a new icon quick-tray in side navigation that plugins can utilize
+ * Added ability to set and retrieve temporary admin messages
+1. [](#improved)
+ * Allow different field to be used as page label in list of pages [#1122](https://github.com/getgrav/grav-plugin-admin/pull/1122)
+ * Updated `en` language for `cache-control` + `clear_images_by_default` system settings
+ * Allow sorting of page based on custom ordering [#1182](https://github.com/getgrav/grav-plugin-admin/pull/1182)
+ * Search for pages by slug and folder name [#1183](https://github.com/getgrav/grav-plugin-admin/pull/1183)
+ * Allow all page data to be used during `onAdminCreatePageFrontmatter()` event [#1175](https://github.com/getgrav/grav-plugin-admin/pull/1175)
+ * Remove single quotes when slugifying title [#1178](https://github.com/getgrav/grav-plugin-admin/pull/1178)
+1. [](#bugfix)
+ * Ignore missing Twig files [#1169](https://github.com/getgrav/grav-plugin-admin/issues/1169)
+ * If from is already defined, don't override it [#1129](https://github.com/getgrav/grav-plugin-admin/issues/1129)
+ * Fixed SelectUnique field not working with files with spaces
+
+# v1.5.1
+## 07/19/2017
+
+1. [](#bugfix)
+ * Fixes issue when saving pages without a `folder` element [#1163](https://github.com/getgrav/grav-plugin-admin/issues/1163)
+ * Fixed mediapicker field inside lists not properly updating the value on the target input [#1157](https://github.com/getgrav/grav-plugin-admin/issues/1157)
+
+# v1.5.0
+## 07/16/2017
+
+1. [](#new)
+ * Implemented Offline mode. Notifies in the admin when disconnected.
+1. [](#bugfix)
+ * Fixed fetch issue throwing error when request not completed and while unloading the page [#1301](https://github.com/getgrav/grav-plugin-admin/issues/1301)
+ * Fixed ordering when > 100 pages [grav#1564](https://github.com/getgrav/grav/pull/1564)
+ * Fixed Lists issue when reindexing, causing Radio fields to potentially lose their `checked` status ([#1154](https://github.com/getgrav/grav-plugin-admin/issues/1154) | related: [1d55ffc](https://github.com/getgrav/grav-plugin-admin/commit/1d55ffc616125047f245efe9f2180ef2c16b4949))
+
+# v1.5.0-rc.4
+## 07/05/2017
+
+1. [](#new)
+ * New `multilevel` field, useful for defining collections definitions, metadata and other complex YAML data [#1135](https://github.com/getgrav/grav-plugin-admin/pull/1135) - (EXPERIMENTAL)
+ * Fix plugins hooked nav authorize not working with array of permissions [#1148](https://github.com/getgrav/grav-plugin-admin/pull/1148)
+1. [](#improved)
+ * Add badge to plugins hooked into nav [#1147](https://github.com/getgrav/grav-plugin-admin/pull/1147)
+ * Added `field.outerclasses` to default form field [#1124](https://github.com/getgrav/grav-plugin-admin/pull/1124)
+ * Reverted back to textarea/YAML for `media.yaml` image options
+ * Fixed color of textarea fields in admin
+1. [](#bugfix)
+ * Fix for bad referenced to `shouldLoadAdditionalFilesInBackground()` [#1145](https://github.com/getgrav/grav-plugin-admin/pull/1145)
+ * Expose Page Media instance to Grav Admin JS API
+ * Fixed mediapicker issue where newly added list items would not work
+ * Fixed issue with min/max setting of list collections. Removing a list item would not refresh properly the count
+ * If folder is empty/not sent, fallback to page slug [#1146](https://github.com/getgrav/grav-plugin-admin/issues/1146)
+ * Escape the URI basename before using it in Twig
+ * Ignore missing Twig file in the Tools page
+
+# v1.5.0-rc.3
+## 06/22/2017
+
+1. [](#new)
+ * New `Admin::getPageMedia()` static method that can be used in blueprints
+ * Added a new `mediapicker` form field which allows to select a media from any page [#1125](https://github.com/getgrav/grav-plugin-admin/pull/1125)
+ * Added info metadata button for images to view EXIF and other useful details about an image
+1. [](#improved)
+ * Pass original image filename via the `AdminController::taskListedia()` task
+ * Various form styling improvements
+ * Provided an option to control how parent select field displays
+1. [](#bugfix)
+ * Fix referencing DI element when not initialized [#1141](https://github.com/getgrav/grav-plugin-admin/pull/1141)
+
+# v1.5.0-rc.2
+## 05/22/2017
+
+1. [](#improved)
+ * Remove save button and save location notification on Config Info tab [#1116](https://github.com/getgrav/grav-plugin-admin/pull/1116)
+ * Allow taxonomy field to just list one or more specific taxonomies if the `taxonomies` field is filled in the blueprint
+ * `File` field now renders thumbnail previews of the selected value on load
+ * Use new unified `Utils::getPagePathFromToken()` method rather
+1. [](#bugfix)
+ * Fix for undefined `include_metadata` error
+
+
+# v1.5.0-rc.1
+## 05/16/2017
+
+1. [](#new)
+ * Add support for a single array field in forms
+ * Added Prev/Next support on page editing view [#1112](https://github.com/getgrav/grav-plugin-admin/pull/1112)
+1. [](#improved)
+ * Improved full-screen editor for better browser compatibility [#1093](https://github.com/getgrav/grav-plugin-admin/pull/1093)
+ * Added ability to choose how you want the preview button to open [#1096](https://github.com/getgrav/grav-plugin-admin/pull/1096)
+ * `base.html.twig` now extends a `base-root.html.twig` file
+ * Add month+date indication to the stats graph to avoid confusion when there are days without visits
+ * Added `min` and `max` options for `list` form field [#1113](https://github.com/getgrav/grav-plugin-admin/pull/1113)
+ * Remove page metadata file on deletion of media
+ * Improved layout on pages list for pages with long titles [#1102](https://github.com/getgrav/grav-plugin-admin/pull/1102)
+ * Added option to make custom "Add page" dropdown entries [#1104](https://github.com/getgrav/grav-plugin-admin/pull/1104)
+1. [](#bugfix)
+ * Fixed issue with tab widths on Pages overlapping non-english toggle switch [#1089](https://github.com/getgrav/grav-plugin-admin/issues/1089)
+ * Added `vendor` to ignores for direct install of Grav
+ * Translated `field.default` for `editor` form field
+ * Fixed an quote error in `en.yaml`
+ * Resolved z-index issues with mobile nav and pages form elements
+ * Fixed issue with file picker where the selected file preview would not show
+ * Refresh page media on media upload
+ * Default to config file slug if translation is missing, otherwise use translation also in the tab title, not just in the page heading [#1039](https://github.com/getgrav/grav-plugin-admin/issues/1039)
+ * Fix language toggle button in admin top bar visible also in fullscreen mode [#1110](https://github.com/getgrav/grav-plugin-admin/issues/1110)
+ * Fix for editor padding [#1111](https://github.com/getgrav/grav-plugin-admin/issues/1111)
+ * Fix tabs inside blueprint overlapping above content [#1115](https://github.com/getgrav/grav-plugin-admin/pull/1115)
+
+# v1.4.2
+## 04/24/2017
+
+1. [](#new)
+ * Added a new `Content Padding` option to tighten up UI padding space (default `true`)
+1. [](#bugfix)
+ * Added back `Admin::initTheme()` relying on Grav fix [#1069](https://github.com/getgrav/grav-plugin-admin/pull/1069) as it conflicts ith Gantry5
+ * Fix for missing scrollbar when in full-size editor for Firefox [#1077](https://github.com/getgrav/grav-plugin-admin/issues/1077)
+ * Fix for overlay of Add-Page button in full-size editor [#1077](https://github.com/getgrav/grav-plugin-admin/issues/1077)
+ * Better fix for session-based parent overriding root page parents [#1078](https://github.com/getgrav/grav-plugin-admin/issues/1078)
+ * Allow support for `Pages::getList()` with `show_modular` option [#1080](https://github.com/getgrav/grav-plugin-admin/issues/1080)
+ * Added `[tmp,user]` ignores for direct install of Grav [grav#1447](https://github.com/getgrav/grav/issues/1447)
+
+# v1.4.1
+## 04/19/2017
+
+1. [](#bugfix)
+ * Reverted [#1069](https://github.com/getgrav/grav-plugin-admin/pull/1069) as it conflicts ith Gantry5
+
+# v1.4.0
+## 04/19/2017
+
+1. [](#new)
+ * Added ability to add new pages/folders while editing existing page
+1. [](#improved)
+ * Initialize theme in Admin Plugin [#1069](https://github.com/getgrav/grav-plugin-admin/pull/1069)
+ * Use new system configuration entries for username and password format
+ * Reworked Page parent field to use `Pages::getList()` rather than logic in Twig field itself
+ * More robust styling of admin themes page [#1067](https://github.com/getgrav/grav-plugin-admin/pull/1067)
+ * Fix fullscreen editor height [#1065](https://github.com/getgrav/grav-plugin-admin/pull/1065)
+ * Fix small UI issue in the editor with `codemirror.lineNumbers` && `codemirror.styleActiveLine` enabled
+ * Fix UI performance issue in the dashboard [#1064](https://github.com/getgrav/grav-plugin-admin/issues/1064)
+1. [](#bugfix)
+ * Fixed issue with parent not working with custom slug [#1068](https://github.com/getgrav/grav-plugin-admin/issues/1068)
+ * Fixed issue with new page modal not remembering last choice [#1072](https://github.com/getgrav/grav-plugin-admin/issues/1072)
+
+# v1.3.3
+## 04/12/2017
+
+1. [](#bugfix)
+ * Fix for regression introduced in the automatic page template switch when changing page parent [#1059](https://github.com/getgrav/grav-plugin-admin/issues/1059) [grav#1403](https://github.com/getgrav/grav/issues/1403) [#1062](https://github.com/getgrav/grav-plugin-admin/issues/1062)
+ * Fix issue with editor field in lists [#1037](https://github.com/getgrav/grav-plugin-admin/issues/1037)
+
+# v1.3.2
+## 04/10/2017
+
+1. [](#improved)
+ * Added new 'parents' field and switched Page blueprints to use this
+1. [](#bugfix)
+ * Fix for regression in h3 style in the Spacer field [#267](https://github.com/getgrav/grav-plugin-admin/issues/267)
+ * Fix missing preview in page media for SVG images [#1051](https://github.com/getgrav/grav-plugin-admin/issues/1051)
+ * Fix missing check when reordering [#1053](https://github.com/getgrav/grav-plugin-admin/issues/1053)
+ * Fix for editors not getting refreshed when changing tab [#1052](https://github.com/getgrav/grav-plugin-admin/issues/1052)
+ * Fix for mobile tabs in page editing [#1057](https://github.com/getgrav/grav-plugin-admin/issues/1057)
+
+# v1.3.1
+## 03/31/2017
+
+1. [](#bugfix)
+ * Fix for `Undefined index: file_path` error with Direct Install [#1043](https://github.com/getgrav/grav-plugin-admin/issues/1043)
+
+# v1.3.0
+## 03/31/2017
+
+1. [](#new)
+ * User uploadable avatar (still falls back to Gravatar if not provided)
+1. [](#improved)
+ * Improved tabs CSS to handle long titles [#1036](https://github.com/getgrav/grav-plugin-admin/issues/1036)
+ * Fixed `step` in range field [Form#136](https://github.com/getgrav/grav-plugin-form/issues/136)
+1. [](#bugfix)
+ * Fixed issue with exception thrown when `copying` and `moving` a page [#1042](https://github.com/getgrav/grav-plugin-admin/issues/1042)
+ * Automatically calculate the *next* numeric folder prefix [Core#1386](https://github.com/getgrav/grav/issues/1386)
+
+# v1.3.0-rc.3
+## 03/22/2017
+
+1. [](#new)
+ * All new `Page Ordering` implementation. Completely revamped and will only reorder with folder-prefix enabled. You can now reorder all siblings at the same time.
+ * Added a new `Advanced - Override` to allow option to display pages by folder name (default) or Collection definition
+ * Improved `range` form field with touch and counter support [#1016](https://github.com/getgrav/grav-plugin-admin/pull/1016)
+1. [](#bugfix)
+ * Cleanup package files via GPM install to make them more windows-friendly [#1361](https://github.com/getgrav/grav/pull/1361)
+
+# v1.3.0-rc.2
+## 03/17/2017
+
+1. [](#improved)
+ * Do not attempt to fetch any notification if settings are disabled [#942](https://github.com/getgrav/grav-plugin-admin/issues/942)
+
+# v1.3.0-rc.1
+## 03/13/2017
+
+1. [](#new)
+ * New flex-based/js Tabs system for better flexibility and improved UX.
+ * Added new **toolbox** with `Direct-Install` option via ZIP or URL.
+ * Added an option to reinstall a plugin/theme already installed [#984](https://github.com/getgrav/grav-plugin-admin/issues/984)
+ * Added a new **range field** [#995](https://github.com/getgrav/grav-plugin-admin/issues/995)
+ * When creating a new page, automatically select the Page Template based on Parent Page Child Type [#1008](https://github.com/getgrav/grav-plugin-admin/issues/1008)
+1. [](#improved)
+ * Page Media field now is available when folder is created, not just markdown file [#1000](https://github.com/getgrav/grav-plugin-admin/issues/1000)
+ * Separated user details and avatar in separate twig to allow more granular overriding in plugins [#989](https://github.com/getgrav/grav-plugin-admin/issues/989)
+ * Nicer layout of themes list on wider screen
+ * Editor full-screen option displays title/save options [#948](https://github.com/getgrav/grav-plugin-admin/issues/948)
+ * Use native OS highlight colors for the editor [#977](https://github.com/getgrav/grav-plugin-admin/issues/977)
+ * Force admin pages to set `Page::expires(0)` so it's not cached [#1009](https://github.com/getgrav/grav-plugin-admin/issues/1009)
+ * Added support for up to 15 tabs (was 10) [#954](https://github.com/getgrav/grav-plugin-admin/issues/954)
+ * Only reorder pages in the admin if collection uses `@self` and `order.by`
+ * Improved configuration tab sizes when you have lots of tabs
+ * Modified default media select size from 150px x 100px to 200px x 150px
+1. [](#bugfix)
+ * Fixed rendering issue with Chrome and sortables collections [#1002](https://github.com/getgrav/grav-plugin-admin/issues/1002)
+ * Fixed issue with removal of file that has been just uploaded and stored in the session
+
+
+# v1.2.14
+## 02/17/2017
+
+1. [](#bugfix)
+ * Fixed bad bug with `GPM::install()` from a change in Admin v1.2.13
+
+# v1.2.13
+## 02/17/2017
+
+1. [](#bugfix)
+ * Fix issue with validating page when switching language [#963](https://github.com/getgrav/grav-plugin-admin/issues/963)
+ * Fix issue with quotes in Admin strings used in JS [#965](https://github.com/getgrav/grav-plugin-admin/issues/965)
+ * Refactored `AdminController::taskGetUpdates` to use standard task/response [#980](https://github.com/getgrav/grav-plugin-admin/issues/980)
+ * Sync Admin pages blueprints with core [core#212d35221a9bbcc242508ba49a551b3f6e62af8e](https://github.com/getgrav/grav/commit/212d35221a9bbcc242508ba49a551b3f6e62af8e)
+
+# v1.2.12
+## 02/12/2017
+
+1. [](#bugfix)
+ * Rebuilt the JS bundle to address various JS-related issues that cropped up in `v1.2.11`
+ * Fixed Firefox Network Error issue when updating multiple plugins/themes at concurrently [#1301](https://github.com/getgrav/grav/issues/1301)
+
+# v1.2.11
+## 02/10/2017
+
+1. [](#new)
+ * Added lang strings for `CLI_COMPATIBILITY` which is new in Grav v1.1.16
+1. [](#improved)
+ * Allow plugin to set custom 'authorize' and 'location' in `onAdminMenu()` event
+ * Updated all language files with latest from [Crowdin](https://crowdin.com/project/grav-admin)
+1. [](#bugfix)
+ * Fixed issue `admin.super` or `admin.users` users changing the account when saving another user [#713](https://github.com/getgrav/grav-plugin-admin/issues/713)
+ * Fix issue where non `admin.super`/`admin.users` users could see other users profiles [#713](https://github.com/getgrav/grav-plugin-admin/issues/713)
+ * Fix removing responsive image from page media [#111](https://github.com/getgrav/grav-plugin-admin/issues/111) [#952](https://github.com/getgrav/grav-plugin-admin/issues/952)
+ * Use @2x & @3x fallback images in the filepicker. [#952](https://github.com/getgrav/grav-plugin-admin/issues/952)
+
+# v1.2.10
+## 1/30/2017
+
+1. [](#improved)
+ * It is now possible to manually specify a format for the `datetime` field [#1261](https://github.com/getgrav/grav/issues/1261)
+ * Allow to see plugins and themes list without internet connection. Also add a more helpful message in the "add" view [grav#1008](https://github.com/getgrav/grav/issues/1008)
+1. [](#bugfix)
+ * Fixed issue with downloaded package when installing a testing release
+ * Allow non admin.super users to change their account information. Allow `admin.super` and `admin.users` to change other users information. [#943](https://github.com/getgrav/grav/issues/943)
+ * Handle removing a media file also if it's not a json request. Was not working after https://github.com/getgrav/grav-plugin-admin/commit/6b343365996ce838759d80fa3917d4d994f1aeb4
+
+# v1.2.9
+## 01/18/2017
+
+1. [](#improved)
+ * Added lang strings for `ALLOW_WEBSERVER_GZIP` in System configuration
+
+# v1.2.8
+## 01/17/2017
+
+1. [](#improved)
+ * Allow the ability to clear the cache if `admin.maintenance`, as stated in the docs [#908](https://github.com/getgrav/grav-plugin-admin/issues/908)
+ * Added lang strings for `DEFAULT_LANG` in Site configuration
+ * Added lang strings for `NEVER_CACHE_TWIG` in System and Page configuration
+1. [](#bugfix)
+ * Fixed saving the configuration if not `admin.super`
+ * Show the clear cache buttons if the user has `admin.cache` permissions [#908](https://github.com/getgrav/grav-plugin-admin/issues/908#issuecomment-270748616)
+ * Fix colorpicker validation when transparency is set to 1.00 [#921](https://github.com/getgrav/grav-plugin-admin/issues/921)
+ * Fix html markup in section twig [#922](https://github.com/getgrav/grav-plugin-admin/pull/922)
+ * Fix bug in deleting a file uploaded with the `file` field [#920](github.com/getgrav/grav-plugin-admin/issues/920)
+ * Fix for plugin throwing event-based errors when plugin is removed and no longer available to process said event
+
+# v1.2.7
+## 12/22/2016
+
+1. [](#improved)
+ * Fixed an issue with non `.html` extensions not setting application type properly when fallback template not found.
+1. [](#bugfix)
+ * Fix plugins and themes json calls after the introduction of [HTML fallback for templates not found](https://github.com/getgrav/grav/commit/364209a27da0f5dfba5fde9c4b07b6d5844cda47)
+
+
+# v1.2.6
+## 12/21/2016
+
+1. [](#improved)
+ * Added a delay before reloading the page when a plugin or theme get installed
+ * Fix prompting to remove Grav itself when removing a package that requires a specific Grav version
+ * Remove cli-server exception since we now have compatibility with a custom router in Grav [#1219](https://github.com/getgrav/grav/pull/1219)
+1. [](#bugfix)
+ * Fix issue with array field and `value_only: true`
+
+# v1.2.5
+## 12/13/2016
+
+1. [](#new)
+ * RC released as stable
+1. [](#bugfix)
+ * YAML syntax fixes
+
+# v1.2.5-rc.4
+## 12/07/2016
+
+1. [](#new)
+ * Added a new `permissions` form field, used in the user profile to simplify editing permissions
+ * Added several new `onAdminAfter...()` events to allow for more 3rd party plugin interaction
+1. [](#bugfix)
+ * Updated admin-user-details to allow longer user names in the sidebar [#879](https://github.com/getgrav/grav-plugin-admin/issues/879)
+ * Redirect to a 404 page when accessing nonexistent plugins and themes [#880](https://github.com/getgrav/grav-plugin-admin/issues/880)
+
+# v1.2.5-rc.3
+## 11/26/2016
+
+1. [](#bugfix)
+ * Update class namespace for Admin class [#874](https://github.com/getgrav/grav-plugin-admin/issues/874)
+ * Fix updating/installing packages from admin
+
+# v1.2.5-rc.2
+## 11/19/2016
+
+1. [](#bugfix)
+ * Make default value work for filepicker [#859](https://github.com/getgrav/grav-plugin-admin/issues/859)
+
+# v1.2.5-rc.1
+## 11/09/2016
+
+1. [](#new)
+ * Updated to FontAwesome 4.7.0 with [Grav icon](http://fontawesome.io/icon/grav/)
+1. [](#improved)
+ * Always delete image alternatives in AdminController#taskDelmedia [#814](https://github.com/getgrav/grav-plugin-admin/issues/814)
+ * Use Media class to retrieve files in AdminController#taskGetFilesInFolder [#842](https://github.com/getgrav/grav-plugin-admin/issues/842)
+ * Increased specificity for Colorpicker field to prevent 3rd party conflicts
+1. [](#bugfix)
+ * Editor link button doesn't prefix links with `http://` anymore [#813](https://github.com/getgrav/grav-plugin-admin/issues/813)
+ * Dashboard Charts now always refresh no matter what [#753](https://github.com/getgrav/grav-plugin-admin/issues/753)
+ * Use rawRoute for parent too when saving [#843](https://github.com/getgrav/grav-plugin-admin/issues/843)
+ * Avoid different output when users exist or not in password recovery [#849](https://github.com/getgrav/grav/issues/849)
+ * Fix login to admin with permission inherited from group [#857](https://github.com/getgrav/grav-plugin-admin/issues/857)
+
+
+# v1.2.4
+## 10/22/2016
+
+1. [](#bugfix)
+ * Fix for accented media files [#833](https://github.com/getgrav/grav-plugin-admin/issues/833)
+ * Fix for `CTRL + s` not saving in editor [#832](https://github.com/getgrav/grav-plugin-admin/pull/832)
+ * Fix for missing REDIS translations in admin [#1123](https://github.com/getgrav/grav/issues/1123)
+
+# v1.2.3
+## 10/19/2016
+
+1. [](#new)
+ * Added new `onAdminCreatePageFrontmatter()` event to support plugins such as `auto-date` by allowing frontmatter to be modified by plugins.
+ * Added a new independent `cache_enabled` option for admin plugin (default is `false`). Should fix various sync issues.
+ * Add an `onAdminData` event to allow plugins to add additional blueprints data
+1. [](#improved)
+ * Handle errors when a resource fails to install
+ * Page media and File field images thumbnail are now properly proportionate and 150x100
+ * Added the Codeception testing suite with an initial test
+1. [](#bugfix)
+ * Fix [#1034](https://github.com/getgrav/grav/issues/1034) redirect of page creation procedure when system.home.hide_in_urls is enabled
+ * Media (Page): Do not extend parent metehod for sending files since Safari and IE API for FormData don’t implement `delete` ([#772](https://github.com/getgrav/grav-plugin-admin/issues/772))
+ * Clean up POST keys containing square brackets, allows for regex ranges in routes ([#776](https://github.com/getgrav/grav-plugin-admin/issues/776))
+ * Fix [#773](https://github.com/getgrav/grav-plugin-admin/issues/773) allow filepicker work inside lists, respond to mutation event
+ * Better error handling for Feed when unable to connect
+ * Fixed UI for Pagemedia note when files cannot yet be uploaded ([#798](https://github.com/getgrav/grav-plugin-admin/issues/798))
+ * Fixed Submit buttons getting disabled in case of form invalidity disallowing to submit again ([#802](https://github.com/getgrav/grav-plugin-admin/issues/802))
+ * Fixed issue when reading the file size setting if set to `0` (in Pagemedia and File fields)
+ * Fixed issue with `file` field in collections that caused unexpected duplication of items ([#775](https://github.com/getgrav/grav-plugin-admin/issues/775))
+ * Dramatically improved `filepicker` performance. Data is only ever loaded when the drop-down is on focus, as it was supposed to be. Image preview of a selected item won't be rendered unless the field gains focus to avoid wasting resources. ([#788](https://github.com/getgrav/grav-plugin-admin/issues/788))
+ * Allow `filepicker` field to peak at the pending uploaded files and optimistically select them ([#792](https://github.com/getgrav/grav-plugin-admin/issues/792))
+ * Fix [#821](https://github.com/getgrav/grav-plugin-admin/issues/821) issue in saving a page to a new language when the filename does not contain the filename yet.
+
+# v1.2.2
+## 09/08/2016
+
+1. [](#bugfix)
+ * Fix [#767](https://github.com/getgrav/grav-plugin-admin/issues/767) Add styling for new HTML5 input field types
+ * Fix issue with checking the package dependencies when more than one package is being inspected
+
+# v1.2.1
+## 09/07/2016
+
+1. [](#bugfix)
+ * Fixed `tmp://` stream issue with Admin updated to 1.2 before Grav updated 1.1.4
+
+# v1.2.0
+## 09/07/2016
+
+1. [](#new)
+ * All new `file` field. All files get uploaded via Ajax and are stored upon Save. This improves the Save task tremendously as now there is no longer the need of waiting for the files to finish uploading. Fully backward compatible, `file` field now includes also a `limit` and `filesize` option in the blueprints. The former determines how many files are allowed to be uploaded when in combination with `multiple: true` (default: 10), the latter determines the file size limit (in MB) allowed for each file (default: 5MB)
+ * Added a new `filepicker` field, which allows to pick any file from an ajax-powered select box. The `pagemediaselect` field now internally uses the `filepicker` field to live-reload the available files, and to show image previews.
+1. [](#improved)
+ * Better error handling for 500 Internal Server Errors, when Fetch fails
+ * Various notifications style and other CSS fixes
+ * More language strings added
+ * Added `clear-tmp` to cache clear drop-down
+ * Unified JSON twig templates
+ * Better error handling for 500 Internal Server Errors, when Fetch fails.
+ * Updated vendor Libraries
+1. [](#bugfix)
+ * Curl fix for invalid cert errors with News Feed
+ * Avoid requiring `admin.super` for ajax calls [#739](https://github.com/getgrav/grav-plugin-admin/issues/739)
+ * Fix showing HTML in notifications, in the feed
+ * Fixed broken page type filtering
+ * Fixed `beforeunload` event not prompting to offer the choice to stay on the page in case of unsaved changes
+ * Fixed click-away detection for preventing loss of changes, that would get ignored in some circumstances (ie, from modal confirmation)
+ * Fixed issue with `_json` elements where nested fields merging would get stored in an unexpected way
+ * Fixed composer dependencies missing error message
+
+# v1.1.4
+## 08/14/2016
+
+1. [](#bugfix)
+ * Fixed Firefox News Feed dashboard widget layout
+
+# v1.1.3
+## 08/10/2016
+
+1. [](#new)
+ * Admin notifications system. Admin will pull and cache notifications. This will be used to announce important updates, security vulnerabilities, and general interest news.
+ * Ability to disable widgets in the dashboard
+ * Added news feed widget to the dashboard
+1. [](#improved)
+ * Updated FontAwesome to v4.6.3
+ * Use new List functionality for Media Configuration
+ * Get fresh media list for `Controller::getListMedia()` rather that cache so always latest.
+ * Add translation strings for the new system.force_ssl option
+ * Reworked List UI to better handle drag & drop sort. To sort it is now required to use the left drag handle [#724](https://github.com/getgrav/grav-plugin-admin/issues/724)
+ * Lists now features a new YAML option `controls: [top|bottom|both]` (default: bottom) which will display the "Add Item" button at the Top and/or Bottom position relative to the list. When the Top button is pressed, a new item will be added at the beginning of the list, when the Bottom button is pressed, a new item will be appended to the list.
+ * Lists now features two new YAML options `sortby: [field]` (default: disabled) and `sortby_dir: [asc|desc]` (default: asc) which will display a new Sorting button in the list allowing to automatically reindex the collection based on the given sort field set.
+ * Lists now features a new YAML option `collapsed: [true|false]` (default: false) and a new UI/UX that allows for collapsing / expanding collection items, allowing to better managing long lists of items. It is advised to always put as first field the most significant one, so that when a list is collapsed it can be still easily browsed.
+ * It is now possible to sort Array fields via drag & drop [#950](https://github.com/getgrav/grav/issues/950)
+1. [](#bugfix)
+ * Fixed issue in Admin favicon URL [#704](https://github.com/getgrav/grav-plugin-admin/issues/704)
+ * Fixed issue in `selfupgrade` where the package would get downloaded in the wrong destination
+ * Hide tab when user is not authorized to access it [#712](https://github.com/getgrav/grav-plugin-admin/issues/712)
+ * Fixed Lists issue when reindexing, causing Radio fields to potentially lose their `checked` status
+ * Avoid overwriting a file when uploaded with the same filename through the Admin blueprint `file` field type if `avoid_overwriting` is enabled on the field
+ * Fixed issue with Array field in `value_only` mode, improperly displaying the key when no value was set
+ * Translate the description of a blueprint field [#729](https://github.com/getgrav/grav-plugin-admin/issues/729)
+
+# v1.1.2
+## 07/16/2016
+
+1. [](#improved)
+ * Forcing limit of upload files based on System settings
+1. [](#bugfix)
+ * Definitive fix for multi form submission in Microsoft Edge causing the Save to not work [#694](https://github.com/getgrav/grav-plugin-admin/issues/694)
+ * Fix issue with calculating the `theme_url` with `open_basedir` restrictions [#699](https://github.com/getgrav/grav-plugin-admin/issues/699)
+ * Check for null payload before going on [#526](https://github.com/getgrav/grav-plugin-admin/issues/526)
+ * Redraw Dashboard Charts when collapsing/expanding the sidebar
+ * Fix for `cache/compiled` errors resulting from page media uploads [getgrav/grav#938](https://github.com/getgrav/grav/issues/938)
+
+# v1.1.1
+## 07/14/2016
+
+1. [](#bugfix)
+ * Fixed issue with forms causing creation of new pages not to work [#698](https://github.com/getgrav/grav-plugin-admin/issues/698) and [getgrav/grav#934](https://github.com/getgrav/grav/issues/934)
+
+# v1.1.0
+## 07/14/2016
+
+1. [](#improved)
+ * Added the ability to login with the email in addition to the username. [#674](https://github.com/getgrav/grav-plugin-admin/issues/674)
+ * It is now possible to sort the Plugins and Themes views by 'Name', 'Author', 'GravTeam', 'Release Date', 'Updates Available' and 'Testing' releases (if in Testing Channel), both Ascending and Descending. [#583](https://github.com/getgrav/grav-plugin-admin/issues/583)
+ * Prevent external links (like the Preview button) to trigger the "Changes Detected" notice [#689](https://github.com/getgrav/grav-plugin-admin/issues/689)
+ * Added a filter field in Plugins and Themes list views, to allow for quick search of a particular resource
+ * Added new `Enabled` sorting option for Plugins list view
+1. [](#bugfix)
+ * Fixed an issue that prevented removing more than one page, in the pages listng [#672](https://github.com/getgrav/grav-plugin-admin/issues/672)
+ * Fixed toggleables in lists that were always loading as checked even when not stored [#688](https://github.com/getgrav/grav-plugin-admin/issues/688)
+ * Fixed Fullscreen tooltip in Editor displaying off screen (when in fullscreen mode) [#677](https://github.com/getgrav/grav-plugin-admin/issues/677)
+ * Fixed inconsistency in the way selectized fields would be rendered [#692](https://github.com/getgrav/grav-plugin-admin/issues/692)
+ * Fixed issue with Save in Microsoft Edge [#694](https://github.com/getgrav/grav-plugin-admin/issues/694)
+
+# v1.1.0-rc.4
+## 06/21/2016
+
+1. [](#bugfix)
+ * Fix for 'front-end' shortcut showing in mobile sidebar incorrectly.
+ * Append progressive number to the copied page title. [#394](https://github.com/getgrav/grav-plugin-admin/issues/394)
+ * Add field description to forms [#667](https://github.com/getgrav/grav-plugin-admin/pull/667)
+ * Fix clearing all cache [#658](https://github.com/getgrav/grav-plugin-admin/issues/658)
+ * Assign the correct ordering when saving a page that didn't have ordering set before [#628](https://github.com/getgrav/grav-plugin-admin/issues/628)
+ * Fix issue when saving a modular child folder as 05.somethin and being reset to 01.something upon save [#628](https://github.com/getgrav/grav-plugin-admin/issues/628)
+
+# v1.1.0-rc.3
+## 06/14/2016
+
+1. [](#bugfix)
+ * Fix for Gemini Scrollbar CSS breaking layout in IE 9+ [#644](https://github.com/getgrav/grav-plugin-admin/issues/644)
+ * Fall back to english for UI language if admin's language is not set [#641](https://github.com/getgrav/grav-plugin-admin/issues/641)
+ * List field has the wrong label/field width. Switched to "1/3 | 2/3" like all other fields.
+ * Correctly set the page slug on page copy. Avoids having two pages with the same slug [#394](https://github.com/getgrav/grav-plugin-admin/issues/394)
+ * When copying a page, if there's a page prefix (used for ordering), update the value to avoid having two pages with the same order number [#429](https://github.com/getgrav/grav-plugin-admin/issues/429)
+ * Fixed size of dropdown text in responsive views to be readable [#647](https://github.com/getgrav/grav-plugin-admin/issues/647)
+ * Fixed issue with checkbox in toggleables getting submitted with the form even when disabled (fixes #646)
+
+# v1.1.0-rc.2
+## 06/02/2016
+
+1. [](#improved)
+ * Cleaned up the Page Preview CSS to make it more 'standard' [#634](https://github.com/getgrav/grav-plugin-admin/issues/634)
+ * Added a legend with the Page colors explained [#637](https://github.com/getgrav/grav-plugin-admin/issues/637)
+ * Hide email output when sending forgot password instructions [#571](https://github.com/getgrav/grav-plugin-admin/issues/571)
+1. [](#bugfix)
+ * Fixed "Data type `System` doesn't exist!" error when activating a theme [#635](https://github.com/getgrav/grav-plugin-admin/issues/635)
+ * Fixed issue with custom media types not deleting on save [#633](https://github.com/getgrav/grav-plugin-admin/issues/633)
+ * Fixed issue when saving `List` field type in plugins + pages
+ * Fixed JS error on login/logout page due to jQuery not being loaded
+
+
+# v1.1.0-rc.1
+## 06/01/2016
+
+1. [](#new)
+ * Major improvements with the **File Upload** (`file`) field type. Now fully supports themes, plugins, configuration + pages
+1. [](#improved)
+ * Updated with latest languages via [Crowdin](https://crowdin.com/project/grav-admin/)
+ * Provide security options for single tabs [#615](https://github.com/getgrav/grav-plugin-admin/issues/615)
+ * Disable double clicking on Save/Delete/Copy page actions [#611](https://github.com/getgrav/grav-plugin-admin/issues/611)
+ * Tweaked the avatar alignment in sidebar [#592](https://github.com/getgrav/grav-plugin-admin/issues/592)
+ * Added page name to delete dialog [#511](https://github.com/getgrav/grav-plugin-admin/issues/511)
+ * Enabling / Disabling a Plugin doesn't trigger the expand / collapse details anymore [#614](https://github.com/getgrav/grav-plugin-admin/issues/614)
+ * Added hover on plugins list rows to match pages [#619](https://github.com/getgrav/grav-plugin-admin/issues/619)
+ * Translate media configuration [#608](https://github.com/getgrav/grav-plugin-admin/issues/608)
+ * Use raw routes in blueprints to better support multi-language [#798](https://github.com/getgrav/grav-plugin-admin/issues/798)
+ * Updated NPM modules dependencies
+1. [](#bugfix)
+ * Fix double "Removed successfully" appearing when removing a package [#609](https://github.com/getgrav/grav-plugin-admin/issues/609)
+ * Prevent removing required plugins dependencies when removing a package [#613](https://github.com/getgrav/grav-plugin-admin/issues/613)
+ * Show page title in Delete Confirmation modal if this information is available
+ * Don't try to uninstall admin/form/login/email plugins
+ * Only check for updates if not `admin.maintenance` or `admin.super` [#557](https://github.com/getgrav/grav-plugin-admin/issues/557)
+ * Always submit checkboxes that are not checked and force a 0 value [#616](https://github.com/getgrav/grav-plugin-admin/issues/616)
+ * Fix encoding in tooltips again [#622](https://github.com/getgrav/grav-plugin-admin/issues/622)
+ * Do not show `move` cursor for Collections that aren't sortable [#624](https://github.com/getgrav/grav-plugin-admin/issues/624)
+ * Properly handle Collections that specify a custom key, rather than falling back to indexed list [#632](https://github.com/getgrav/grav-plugin-admin/issues/632)
+
+# v1.1.0-beta.5
+## 05/23/2016
+
+1. [](#improved)
+ * Set sidebar navigation defaults back to "Tab Activation" and "Auto Width"
+ * Custom logo text is displayed as first letter in small sidebar view [#829](https://github.com/getgrav/grav/issues/829)
+ * Copied admin-only blueprints from Grav core to the Admin plugin
+ * Allow `field.label` to have HTML in it [#601](https://github.com/getgrav/grav-plugin-admin/issues/601)
+1. [](#bugfix)
+ * Fixed Togggle field with doubled `checked="checked"` when `toggleable: true` [#579](https://github.com/getgrav/grav-plugin-admin/issues/579)
+ * Strip HTML tags and lowercase username from login/reset forms [#577](https://github.com/getgrav/grav-plugin-admin/issues/577)
+ * Fixed issue with version numbers not showing up for dependencies [#581](https://github.com/getgrav/grav-plugin-admin/issues/581)
+ * Fixed editor tooltips in fullscreen mode and tablet devices rendering [#566](https://github.com/getgrav/grav-plugin-admin/issues/566)
+ * Fixed issue with `file` form field not functioning [#838](https://github.com/getgrav/grav/issues/838)
+ * Fixed issue with creating pages [#595](https://github.com/getgrav/grav-plugin-admin/issues/595)
+
+# v1.1.0-beta.4
+## 05/09/2016
+
+1. [](#new)
+ * Implemented Quickopen functionality to automatically open / close the Sidebar when mouseover
+1. [](#improved)
+ * Better error handling when `obj->validate()` fails with exception [#594](https://github.com/getgrav/grav-plugin-admin/issues/564)
+ * Improve markup of update and add package dependencies in update modal [#560](https://github.com/getgrav/grav-plugin-admin/issues/560)
+1. [](#bugfix)
+ * Fix for admin translation filter (`|tu`) not substituting text - [#567](https://github.com/getgrav/grav-plugin-admin/issues/567)
+ * Translated "Publishing" tab text [#561](https://github.com/getgrav/grav-plugin-admin/issues/561)
+ * Fix invalid argument supplied in foreach [#563](https://github.com/getgrav/grav-plugin-admin/issues/563)
+ * CSS fixes for editor button alignment
+ * Fix for forgot password not finding anyone
+ * Fix UI issue with update button on a package page in Firefox
+ * Fix issue with update button when automatic check for updates is disabled
+ * Fix issue caused by clicking "Check for updates" multiple times
+ * Added missing translations
+ * Fix for Themes with an array of keywords [#823](https://github.com/getgrav/grav/issues/823)
+
+# v1.1.0-beta.3
+## 05/04/2016
+
+1. [](#new)
+ * Added a `|adminNicetime` Twig filter to show 'nicetime' in admin user's language
+ * Added a `prepend` and `append` field option for text input type
+ * Added a WIP `onAdminRegisterPermissions` event
+ * Added several new languages: Arabic, Danish, Greek, Farsi, Korean, Romanian, Thai. Huge thanks to the [translation teams](https://crowdin.com/project/grav-admin)
+1. [](#improved)
+ * Fixed UI issue with Backup / Update buttons positioning
+ * Tweaked placeholders color in login/new user panels [#542](https://github.com/getgrav/grav-plugin-admin/issues/542)
+1. [](#bugfix)
+ * Fixed several untranslated strings
+ * Fix the version information after updating Grav from Admin
+ * Fix a Twig autoescape issue on Plugins descriptions
+ * Fix for showing empty drop-down with only one supported language [#522](https://github.com/getgrav/grav-plugin-admin/issues/522)
+ * Fix for visibility toggle on new page not working [#551](https://github.com/getgrav/grav-plugin-admin/issues/551)
+ * Page tooltips usability issue [#496](https://github.com/getgrav/grav-plugin-admin/issues/496)
+ * Fix removed title attribute from editor toolbar buttons [#539](https://github.com/getgrav/grav-plugin-admin/issues/539)
+ * Allow Incognito / Private browsing to still function in Safari [#527](https://github.com/getgrav/grav-plugin-admin/issues/527)
+
+# v1.1.0-beta.2
+## 04/27/2016
+
+1. [](#new)
+ * Added `grav ~1.1` to dependencies
+ * Added a persistent message if you try to run Admin 1.1 on Grav 1.0
+1. [](#improved)
+ * Used locator instead of `CACHE_DIR`
+ * Added a better way to get Admin version
+ * Show account page for users with certain ACL [#524](https://github.com/getgrav/grav-plugin-admin/pull/524)
+1. [](#bugfix)
+ * Fixed Editor Preview using wrong parameters for the ajax call
+ * Fixed toggle for stable/testing channel
+ * Fixed blueprint JSON fields
+ * If not logged in redirect to base path [#445](https://github.com/getgrav/grav-plugin-admin/pull/445)
+ * Various autoescape fixes
+ * ColorPicker CSS fixes
+ * Fix for translation of admin login [#500](https://github.com/getgrav/grav-plugin-admin/issues/500)
+ * Fix list not applying `toggleable: true` and `style: vertical` [#518](https://github.com/getgrav/grav-plugin-admin/pull/518)
+ * Fixed issue with update for wrong plugin displaying on plugin details pages
+ * Fixed error with the **close sidebar** toggle in some browsers (Firefox, iOS Safari)
+
+# v1.1.0-beta.1
+## 04/20/2016
+
+1. [](#new)
+ * JavaScript Rewrite. Admin is now built in ES6
+ * Lists can now be nested and 'fancy fields' (such as editor, datetime picker, selectize, other lists) get automatically initialized so they are always available no matter if you add or remove items from the lists
+ * The Editor has been reworked to be more flexible. In fact you can now pass any CodeMirror setting via blueprints, through the codemirror: attribute. The buttons have also a new API that allow to add or ignore buttons and behaviors into the toolbar from any plugin (see grav-plugin-editor-buttons). We also added the headers buttons (H1-H6) and Undo / Redo buttons, due to popular demand
+ * We introduced a new colorpicker field. You can now add more colors to your admin plugins :)
+ * Along with the versioning support added in the Grav Core for 1.1, the admin plugin can now install dependencies with the same versioning requirements as the GPM CLI commands.
+ * New System configuration field for toggling GPM release version (testing/stable)
+ * Several new system configuration options for new functionality such as `Process frontmatter Twig`
+ * Ability to collapse the sidebar to a smaller icon view if you need more room.
+1. [](#improved)
+ * The default Grav theme has been tweaked and in many places completely rewritten to ensure that it's as flexible as possible. The primary reason for this was to ensure theming and customization compatibility for the upcoming Admin Pro plugin, but a key benefit includes greatly improved mobile compatibility.
+ * We reworked the Datetimepicker, you will notice a new refreshed UI with a much better support for translations
+ * Tabs are now persistent. In views such as Page editing, when switching tab and saving or refreshing, would cause the tab to be reset to the initial one.
+ * When editing a page in Expert mode, the frontmatter editor is now more friendly. You will now get line numbers, undo/redo and YAML linter.
+ * Behind the scenes we have reworked how the form and toggleables work. This added a lot more reliability and consistency across the whole admin.
+ * The Pages view has more persistent states. It will now remember your expanded/collapsed states as well as filtering.
+ * Lists can now accept a custom button label with the 'btnLabel' property
+ * After login to Admin, redirect to the original URL called
+ * Admin now has an unique cache key compared to the 'site' so pages can be cached independently
+ * Improved the layout of the User Profile page.
+ * Set cache key uniquely for admin so cache does not colide with site
+1. [](#bugfix)
+ * Fix for modular preview - [#254](https://github.com/getgrav/grav-plugin-admin/issues/254)
+ * Fix for long content and page tabs - [#441](https://github.com/getgrav/grav-plugin-admin/issues/441)
+ * Fix for clear cache after adding new folder - [#393](https://github.com/getgrav/grav-plugin-admin/issues/393)
+
+# v1.0.9
+## 02/11/2016
+
+1. [](#bugfix)
+ * Fix language translation files
+
+# v1.0.8
+## 02/05/2016
+
+1. [](#new)
+ * Added a logout button when not authorized to access a page in Admin
+ * Added the option to hide a tab from an extended blueprint (https://github.com/getgrav/grav/issues/620)
+ * Many new languages and updates to existing languages from the Translation team.
+1. [](#improved)
+ * Check frontmatter for validity prior to saving
+ * Add noindex, nofollow across the entire admin theme if no other robots headers are set on a page
+ * Allow to hide a configuration blueprint section / tab and still save its values
+ * Allow to show user defined blueprints in configuration
+ * Updated FontAwesome to latest 4.5.0 version
+1. [](#bugfix)
+ * Fixed an issue with user registration on Linux caused by `glob()` possibly returning false.
+ * Fixed an issue preventing Admin to work correctly in a multisite configuration
+ * Fixed preview and insertion of images with non-lowercase extension
+ * Fixed an incorrect number of pages being displayed in the sidebar in some cases
+ * [Security] Don't reveal Grav filesystem path when trying to delete non-existing images
+ * [Security] Fix PHP error happening when uploading file without extension if the JS dropzone uploader is configured to allow empty file extensions
+ * [Security] Ensure correct escaping in various Twig files
+
+# v1.0.7
+## 01/15/2016
+
+1. [](#new)
+ * Added onAdminDashboard event
+ * Added onAdminSave event
+ * New lang strings for reverse proxy toggle
+1. [](#improved)
+ * More robust YAML file checking in config folders
+ * Removed deprecated menu event
+ * Removed old logs code
+ * Used new onAdminDashboard event for current dashboard widgets
+1. [](#bugfix)
+ * Fix for missing access checks on config pages #397
+ * Fix parent not loaded on admin form save #587
+ * When no route field is added to a page blueprint, add it as page root
+ * Fix for wrong page count (will show dynamic added pages in count too - Need to fix this)
+ * Fix for IE/Edge saving forms #391
+
+# v1.0.6
+## 01/07/2016
+
+1. [](#bugfix)
+ * Fix for forms appending `_json` fields on every save
+
+# v1.0.5
+## 01/07/2016
+
+1. [](#new)
+ * Added a pointer to Grav's contributing guide
+ * Handle the optional logic to strip home from Page routes and urls
+ * The Configuration page now shows any blueprint found in the user/blueprints/config/ folder, thus allowing to add custom configurations
+1. [](#improved)
+ * Allow the nonce for a POST action to be set in the query url
+ * Add a fallback twig template to use in case Twig cannot find a template file
+ * Modified update Theme and Plugin buttons to use more reliably markup
+1. [](#bugfix)
+ * Fix additional `on` parameter when saving plugins configs that contain tabs in their blueprint
+ * Fixes for the `pagemediaselect` form field
+ * Fix an untranslated message in the logout form when `system.languages.translations` is disabled
+ * Fixed a hardcoded `http://` reference throwing warnings under HTTPS
+ * Ensure download package has `.zip` extension, just in case
+
+# v1.0.4
+## 12/22/2015
+
+1. [](#improved)
+ * Improved File input field for admin
+ * Restore file inputs functionality and process form via JS if no inputs found
+1. [](#bugfix)
+ * Fix for the image preview in the file field on multi-lang sites
+ * Fix problem in form code introduced by fix to allow file uploads
+ * Fix redirect in deleting page media
+
+# v1.0.3
+## 12/20/2015
+
+1. [](#new)
+ * Added `pagemediaselect` field for use in pages
+1. [](#improved)
+ * Updated various languages
+ * Check for method `meetsRequirements()` prior to using
+ * Enable `file` form field to be used in plugins and theme blueprints
+
+# v1.0.2
+## 12/18/2015
+
+1. [](#bugfix)
+ * Fixed issue with user edit page causing error due to individual language files
+
+# v1.0.1
+## 12/18/2015
+
+1. [](#new)
+ * Moved languages into individual files under `languages/` folder
+ * Added a check for PHP version
+ * Dutch translation added
+1. [](#improved)
+ * Let forms work with file inputs
+ * Various file input improvements
+ * Language updates
+ * Better checks for existence of Popularity JSON data
+ * Add file processing to admin forms
+ * More Admin Pro integration fixes
+1. [](#bugfix)
+ * Set form to multipart if it contains a file field
+ * `cleanFilesData()` now returns just the filename
+
+# v1.0.0
+## 12/11/2015
+
+1. [](#new)
+ * New built-in admin registration process
+ * Added security check to `section` form field
+ * Added new RocketTheme font with various icons
+ * Add `onAdminThemeInitialized()` event to admin `Themes::init()`
+ * Force timestamp on CSS/JS assets based on `GRAV_VERSION`
+ * Additions for Gantry5 support
+1. [](#improved)
+ * Force lowercase `username` when logging in
+ * Hide markdown preview except for pages
+ * Added a notice if you don't have permission to see dashboard
+ * Updated admin login page logic
+ * Return "Invalid Security Token" instead of "Unauthorized"
+ * Throw exception if you used with built-in PHP web server
+ * Updated languages
+ * Removed `noreply@getgrav.org` default email address
+ * Use new methods to disable CSS/JS pipeline if available
+ * Various code cleanups
+1. [](#bugfix)
+ * Handle case when email `from` is not configured
+ * Fix tabs support in plugin/themes settings
+ * Fix param separator in page media Ajax call
+ * Fix favicon base URL
+
+# v1.0.0-rc.7
+## 12/01/2015
+
+1. [](#new)
+ * Display error page if page does not exist in admin
+ * Removed Beta message option and added toggle for GitHub message
+ * Added functionality to support Admin Pro plugin (in development)
+1. [](#improved)
+ * Added support for Markdown editor in lists #239
+ * Better Markdown Editor API with dynamic initialization
+ * Various language updates
+ * Removed some unused variables
+ * Added admin check for pages existence
+ * Prevent the admin to cause an error when an Ajax action is in progress
+ * Force translations to be active even when disabled in site #299
+ * Do not reinitialize `Selectize` if already available
+1. [](#bugfix)
+ * Fixed full-screen markdown Editor
+ * Fix modular preview not working reliably #254
+ * **Nonce fixes** (hopefully the last of them!)
+ * Fix broken plugin enable/disable
+ * Fix issue where `_redirect: /plugins` was getting stored in the plugin configuration
+ * Replace default them service with admin one
+ * Fix saving array fields #304
+ * Fix missing translations when default language is not english
+ * Fix title variables not translated #310
+
+# v1.0.0-rc.6
+## 11/21/2015
+
+1. [](#improved)
+ * Implemented logic to detect when offline and suppress Ajax calls
+ * Added nonce logic to be used by JS
+1. [](#bugfix)
+ * Nonce fix for updating themes
+ * Nonce fix for deleting pages
+
+# v1.0.0-rc.5
+## 11/20/2015
+
+1. [](#new)
+ * Use **Nonce** mechanism for form security
+ * Added Hungarian translation
+ * Add support for Markdown labels #271
+ * Added support for Markdown Editor in all the things
+ * Implemented save keyboard shortcut (Ctrl + S / CMD + S)
+1. [](#improved)
+ * Better error for "Internal Server Error" when accessing GPM
+ * Updated French translation
+ * Updated Russian translation
+ * Load Gravatar image with protocol-less `//:` syntax
+ * Improved header UI in mobile browsers #265
+ * Dropped unused version of JQuery
+ * More visible Preview link icon
+ * Hide **Latest pages** if there are none
+ * Improved toggle to better support different length strings
+1. [](#bugfix)
+ * Force rescanning fields when submitting a form #243
+ * Set default lang for pages on fresh session
+ * Escaped values in `array.html.twig`
+ * Fix saving in IE Edge
+ * Fixed various typos
+ * Fixed JS button issues #370
+ * Fixed JS error in private browsing #272
+ * Fixed date field border
+ * Fixed multiple instance of Markdown Editor #285
+ * Fixed Spacer CSS #267
+
+# v1.0.0-rc.4
+## 10/29/2015
+
+1. [](#improved)
+ * Changed admin menu event hook to `onAdminMenu()`
+ * Minor improvements for admin page location
+ * Additional lang strings for Grav 1.0.0-rc.3
+
+# v1.0.0-rc.3
+## 10/27/2015
+
+1. [](#improved)
+ * Rely on context-language for active language
+ * Improved some Russian translations
+ * Only show login if not already logged in
+1. [](#bugfix)
+ * Disable asset pipeline in admin only
+ * Fix Editor cursor insertion point when text is selected in some actions
+
+# v1.0.0-rc.2
+## 10/23/2015
+
+1. [](#bugfix)
+ * Reverted lang redirect code. Needs to be reworked to be more reliable
+
+# v1.0.0-rc.1
+## 10/23/2015
+
+1. [](#new)
+ * Redirect to non-language URL except for `pages/`
+1. [](#improved)
+ * New language strings for new `system.yaml` fields
+ * Improved Russian translations
+ * Improved compatibility with PECL Yaml parser
+1. [](#bugfix)
+ * Redirect to correct page if you change folder/slug
+ * Fix issue with Asset pipeline not being disabled in admin
+ * Fix for HTML in text input fields
+ * Fixed various icons in headers
+
+# v0.6.2
+## 10/15/2015
+
+1. [](#improved)
+ * Use `title` rather than `menu` in Page listing
+ * Wrapped language strings in double-quotes
+ * New language strings for new fields
+1. [](#bugfix)
+ * Fixed issue with IE not able to save pages
+
+# v0.6.1
+## 10/07/2015
+
+1. [](#new)
+ * Added the ability to render front-end templates in markdown preview
+ * Option to disable Google-based fonts. Useful for Cyrillic languages.
+ * Couple of new static helper methods used by new page blueprints
+ * New `fieldset` form field (thanks @Sommerregen!)
+1. [](#improved)
+ * Hide editor buttons in preview mode
+ * Improved support for admin when offline
+ * Use relative URL in Login form
+ * Added some more missing lang strings
+ * Improved German translation
+ * Compressed CSS files for improved performance
+ * Only get last 7 days in week count calculation
+1. [](#bugfix)
+ * Fix saving pages in local-specific languages
+ * Only track 'human' page hits in statistics
+ * Responsive fixes for 'wordy' languages
+ * Fixed delete issue with array field type
+ * Fixed some hardcoded `admin` references to allow admin path change
+ * Fix for issue with lang code being added twice
+ * Fix language name in admin buttons
+
+# v0.6.0
+## 09/16/2015
+
+1. [](#new)
+ * Support for custom markdown editor buttons!
+ * Added Russian translations
+ * Added Japanese translations
+ * Ajax session keep-alive when editing forms
+1. [](#improved)
+ * Added missing Italian translations
+ * Added additional options field into the pages form field
+1. [](#bugfix)
+ * Fix GPM errors in offline mode
+ * Fix for duplicate status messages
+
+# v0.5.0
+## 09/11/2015
+
+1. [](#new)
+ * Responsive layout for mobile compatibility (thanks @Vivalldi!)
+ * Added page type and many other new filters to Page list view
+ * Added granular ACL requirements to admin pages
+ * Ability to define page date format
+ * Added `onAdminTemplateNavPluginHook` to allow for plugins to hook into sidebar
+ * Added YAML Twig filters (to and from)
+ * Support for nested metadata
+ * Added ability to disable automatic update checks via admin plugin configuration
+ * Initial Spanish translation
+1. [](#improved)
+ * Check for existence of a user account
+ * Various language additions
+ * Refactored form fields to remove duplicates from form plugin
+ * Improved date picker
+ * Improved display field
+ * Add page template type to page list view
+ * Various UI fixes
+ * Added some default field 'focus' to save clicking
+ * Only allow "Add Modular" if the theme has modular templates
+ * Updated `chartist.js` library
+ * Updated 'fontawesome' fonts to the latest v4.4
+1. [](#bugfix)
+ * Fix for "drag-n-drop" of non-image media
+ * Fix a fatal error in GPM when offline
+ * Fix a z-index bug with tooltips
+ * Fix a z-index bug in lang dropdowns
+ * Don't allow deleting of last empty array field
+ * Fix for images with parenthesis in filenames
+ * Fix for page title visualization when not set
+ * Fix for cursor position in folder/array fields
+
+# v0.4.3
+## 08/31/2015
+
+1. [](#new)
+ * Added Japanese translation
+ * Support for independent file name and template override
+1. [](#improved)
+ * Improved slug generation using `slugify.js`
+ * Allow the `title` twig variables to set the page title
+ * Improved Page media handling with several bugfixes
+ * Prevent error when there are no pages on a site
+ * If all updates are applied, show "Fully Updated" text in dashboard
+ * Better preview link (requires `rtrim` filter from Grav 0.9.40)
+ * Order all plugins and themes alphabetically
+ * Removed duplicate language entries
+1. [](#bugfix)
+ * Fix for redirect after saving when multilang not enabled
+ * Fix for deleting responsive media
+ * Fix for HTML encoding in markdown field
+
+# v0.4.2
+## 08/25/2015
+
+1. [](#bugfix)
+ * Fix for current admin lang not showing up in page lang dropdown
+ * Fix for incorrect NAME/CONTENT lang keys
+ * Fix for incorrect site link
+
+# v0.4.1
+## 08/24/2015
+
+1. [](#bugfix)
+ * Fix for broken **Add Page** - Doh!
+ * Fix for empty site link when at root
+
+# v0.4.0
+## 08/24/2015
+
+1. [](#new)
+ * Multi-language Page support!!!
+ * Admin languages configurable per user
+ * Toastr messages for `check updates`
+ * new `tu` filter for admin translations
+ * Italian and German admin translations
+ * Added a save location in system and site configuration
+ * Page metadata now uses flexible array field
+1. [](#improved)
+ * Allow subpages of modular pages to display in pages list
+ * Open external pages in new tabs
+ * Reworked `visibility` of pages
+ * Use `PLUGIN_ADMIN` prefix for translations
+ * Added link to gravatar.com to avoid confusion on avatar
+ * Limit page count to 200 in ordering field
+ * Fixed various Safari _flex_ issues
+ * Use `rawRoute()` for page links
+ * Minor `param separator` fixes
+ * Various CSS fixes
+ * Improved CodeMirror to force spaces
+ * Added **Selectize** dropdowns to various forms and modals
+1. [](#bugfix)
+ * Fix for `Call to a member function path() on non-object` error
+ * Fixed dropdown z-index issues
+ * Correctly set the filename including language if set
+ * Fix for empty taxonomies on page save
+ * Fix for page not redirecting properly on folder change
+ * Fix for table headers styling
+ * Added missing translation strings
+ * Unique page counting in total page counts
+ * Fixed JS warning with page filtering and deleting
+
+
+# v0.3.0
+## 08/11/2015
+
+1. [](#new)
+ * Show current date in form date format fields
+ * Added a new **check for updates** button to flush GPM
+ * Added session timeout configuration for admin
+ * Added `isSymlink` logic for Grav
+ * Added new `phpinfo` page
+1. [](#improved)
+ * Improved toggleables
+ * Support `param_separator` for Apache on windows
+ * Logout now goes to interstitial to provide session messages
+ * Updated hints and improved formatting
+ * Encoding URI for images in editor preview
+ * Create user `system.yaml` and `site.yaml` if they are missing
+ * Open external links in new tab by default
+ * Set edit mode to `normal` by default
+ * Disable CSS/JS pipelining in the admin
+1. [](#bugfix)
+ * Fixed form submission not working in IE
+ * Fix fatal error when deleting homepage
+ * Prevent admin plugin activating when the URL of a page contains partial route
+
+# v0.2.0
+## 08/06/2015
+
+1. [](#new)
+ * Added multiple **clear cache** types
+ * Added back to themes link when adding new themes
+ * Properly handles visibility and ordering and guesses best option on new
+ * Added new templates field with support for custom (unsupported) template type
+ * Added new display field for displaying simple text value
+ * **Update Grav** button now works
+ * Added spanish translation
+ * Added german translation
+1. [](#improved)
+ * Improved page order handling logic
+ * Implemented 2-step theme switching logic with warning
+ * Force `modular` page class for modular template
+ * Clear page cache on page delete (ghost pages still showing)
+ * Clears route on page save so changes such as `slug` are picked up
+ * Fix dashboard layout in Safari
+ * Added tooltips for official 'Team Grav' themes/plugins
+1. [](#bugfix)
+ * Handle modular page templates on create
+ * Fixed Firefox JS error for arrays
+ * Ensure we don't change page type to empty and save (causing page to be deleted)
+ * Fixed some minor CSS issues with editor
+ * Fixed link to RocketTheme.com
+ * Disabled fields now stay properly disabled
+
+# v0.1.1
+## 08/04/2015
+
+1. [](#bugfix)
+ * Fixed GitHub URLs
+ * Hiding toggle for disabling Admin plugin
+ * Removed extra text not needed
+
+# v0.1.0
+## 08/04/2015
+
+1. [](#new)
+ * ChangeLog started...
diff --git a/user/plugins/admin/CONTRIBUTING.md b/user/plugins/admin/CONTRIBUTING.md
new file mode 100644
index 0000000..ef2bc6f
--- /dev/null
+++ b/user/plugins/admin/CONTRIBUTING.md
@@ -0,0 +1 @@
+Please read the Contributing Guidelines of the Grav Project
\ No newline at end of file
diff --git a/user/plugins/admin/LICENSE b/user/plugins/admin/LICENSE
new file mode 100644
index 0000000..f7d4bb6
--- /dev/null
+++ b/user/plugins/admin/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2017 Grav
+
+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.
diff --git a/user/plugins/admin/README.md b/user/plugins/admin/README.md
new file mode 100644
index 0000000..430509d
--- /dev/null
+++ b/user/plugins/admin/README.md
@@ -0,0 +1,111 @@
+# Grav Standard Administration Panel Plugin
+
+This **admin plugin** for [Grav](http://github.com/getgrav/grav) is an HTML user interface that provides a convenient way to configure Grav and easily create and modify pages. This will remain a totally optional plugin, and is not in any way required or needed to use Grav effectively. In fact, the admin provides an intentionally limited view to ensure it remains easy to use and not overwhelming. I'm sure power users will still prefer to work with the configuration files directly.
+
+
+
+# Features
+
+* User login with automatic password encryption
+* Forgot password functionality
+* Logged-in-user management
+* One click Grav core updates
+* Dashboard with maintenance status, site activity and latest page updates
+* Notifications system for latest news, blogs, and announcements
+* Ajax-powered backup capability
+* Ajax-powered clear-cache capability
+* System configuration management
+* Site configuration management
+* Normal and Expert modes which allow editing via forms or YAML
+* Page listing with filtering and search
+* Page creation, editing, moving, copying, and deleting
+* Powerful syntax highlighting code editor with instant Grav-powered preview
+* Editor features, hot keys, toolbar, and distraction-free fullscreen mode
+* Drag-n-drop upload of page media files including drag-n-drop placement in the editor
+* One click theme and plugin updates
+* Plugin manager that allows listing and configuration of installed plugins
+* Theme manager that allows listing and configuration of installed themes
+* GPM-powered installation of new plugins and themes
+
+# Support
+
+#### Support
+
+We have tested internally, but we hope to use this public beta phase to identify, isolate, and fix issues related to the plugin to ensure it is as solid and reliable as possible.
+
+For **live chatting**, please use the dedicated [Slack Chat Room](https://getgrav.org/slack) for discussions directly related to Grav.
+
+For **bugs, features, improvements**, please ensure you [create issues in the admin plugin GitHub repository](https://github.com/getgrav/grav-plugin-admin).
+
+# Installation
+
+First ensure you are running the latest **Grav 1.6.7 or later**. This is required for the admin plugin to run properly (`-f` forces a refresh of the GPM index).
+
+```
+$ bin/gpm selfupgrade -f
+```
+
+The admin plugin actually requires the help of 3 other plugins, so to get the admin plugin to work you first need to install **admin**, **login**, **forms**, and **email** plugins. These are available via GPM, and because the plugin has dependencies you just need to proceed and install the admin plugin, and agree when prompted to install the others:
+
+```
+$ bin/gpm install admin
+```
+
+### Manual Installation
+
+Manual installation is not the recommended method of installation, however, it is still possible to install the admin plugin manually. Basically, you need to download each of the following plugins individually:
+
+* [admin](https://github.com/getgrav/grav-plugin-admin/archive/develop.zip)
+* [login](https://github.com/getgrav/grav-plugin-login/archive/develop.zip)
+* [form](https://github.com/getgrav/grav-plugin-form/archive/develop.zip)
+* [email](https://github.com/getgrav/grav-plugin-email/archive/develop.zip)
+
+Extract each archive file into your `user/plugins` folder, then ensure the folders are renamed to just `admin/`, `login/`, `form/`, and `email/`. Then proceed with the **Usage instructions below**.
+
+# Usage
+
+### Create User with CLI
+
+After this you need to create a user account with admin privileges:
+
+```
+$ bin/plugin login new-user
+```
+
+### Create User Manually
+
+Alternatively, you can create a user account manually, in a file called `user/accounts/admin.yaml`. This **filename** is actually the **username** that you will use to login. The contents will contain the other information for the user.
+
+```
+password: 'password'
+email: 'youremail@mail.com'
+fullname: 'Johnny Appleseed'
+title: 'Site Administrator'
+access:
+ admin:
+ login: true
+ super: true
+```
+
+Of course you should edit your `email`, `password`, `fullname`, and `title` to suit your needs.
+
+> You can use any password when you manually put it in this `.yaml` file. However, when you change your password in the admin, it must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters.
+
+# Accessing the Admin
+
+By default, you can access the admin by pointing your browser to `http://yoursite.com/admin`. You can simply log in with the `username` and `password` set in the YAML file you configured earlier.
+
+> After logging in, your **plaintext password** will be removed and replaced by an **encrypted** one.
+
+# Standard Free & Paid Pro Versions
+
+If you have been following the [blog](http://getgrav.org/blog), [Twitter](https://twitter.com/getgrav), [Slack chat](https://getgrav.org/slack), etc., you probably already know now that our intention is to provide two versions of this plugin.
+
+The **standard free version**, is very powerful, and has more functionality than most commercial flat-file CMS systems.
+
+We also intend to release in the near future a more feature-rich **pro version** that will include enhanced functionality, as well as some additional nice-to-have capabilities. This pro version will be a **paid** plugin the price of which is not yet 100% finalized.
+
+# Running Tests
+
+First install the dev dependencies by running `composer update` from the Grav root.
+Then `composer test` will run the Unit Tests, which should be always executed successfully on any site.
diff --git a/user/plugins/admin/admin.php b/user/plugins/admin/admin.php
new file mode 100644
index 0000000..0ecc2d0
--- /dev/null
+++ b/user/plugins/admin/admin.php
@@ -0,0 +1,1014 @@
+ 1000,
+ ];
+
+ /** @var bool */
+ protected $active = false;
+
+ /** @var string */
+ protected $template;
+
+ /** @var string */
+ protected $theme;
+
+ /** @var string */
+ protected $route;
+
+ /** @var string */
+ protected $admin_route;
+
+ /** @var Uri */
+ protected $uri;
+
+ /** @var Admin */
+ protected $admin;
+
+ /** @var Session */
+ protected $session;
+
+ /** @var Popularity */
+ protected $popularity;
+
+ /** @var string */
+ protected $base;
+
+ /** @var string */
+ protected $version;
+
+ /**
+ * @return array
+ */
+ public static function getSubscribedEvents()
+ {
+ return [
+ 'onPluginsInitialized' => [
+ ['autoload', 100001],
+ ['setup', 100000],
+ ['onPluginsInitialized', 1001]
+ ],
+ 'onPageInitialized' => ['onPageInitialized', 0],
+ 'onFormProcessed' => ['onFormProcessed', 0],
+ 'onShutdown' => ['onShutdown', 1000],
+ 'onAdminDashboard' => ['onAdminDashboard', 0],
+ 'onAdminTools' => ['onAdminTools', 0],
+ ];
+ }
+
+ /**
+ * Get list of form field types specified in this plugin. Only special types needs to be listed.
+ *
+ * @return array
+ */
+ public function getFormFieldTypes()
+ {
+ return [
+ 'column' => [
+ 'input@' => false
+ ],
+ 'columns' => [
+ 'input@' => false
+ ],
+ 'fieldset' => [
+ 'input@' => false
+ ],
+ 'section' => [
+ 'input@' => false
+ ],
+ 'list' => [
+ 'array' => true
+ ],
+ 'file' => [
+ 'array' => true
+ ]
+ ];
+ }
+
+ /**
+ * [onPluginsInitialized:100000] Composer autoload.
+ *
+ * @return ClassLoader
+ */
+ public function autoload()
+ {
+ return require __DIR__ . '/vendor/autoload.php';
+ }
+
+ /**
+ * [onPluginsInitialized:100000]
+ *
+ * If the admin path matches, initialize the Login plugin configuration and set the admin
+ * as active.
+ */
+ public function setup()
+ {
+ $route = $this->config->get('plugins.admin.route');
+ if (!$route) {
+ return;
+ }
+
+ $this->base = '/' . trim($route, '/');
+ $this->admin_route = rtrim($this->grav['pages']->base(), '/') . $this->base;
+ $this->uri = $this->grav['uri'];
+
+ $users_exist = Admin::doAnyUsersExist();
+
+ // If no users found, go to register
+ if (!$users_exist) {
+ if (!$this->isAdminPath()) {
+ $this->grav->redirect($this->admin_route);
+ }
+ $this->template = 'register';
+ }
+
+ // Only activate admin if we're inside the admin path.
+ if ($this->isAdminPath()) {
+ try {
+ $this->grav['session']->init();
+ } catch (SessionException $e) {
+ $this->grav['session']->init();
+ $message = 'Session corruption detected, restarting session...';
+
+ /** @var Debugger $debugger */
+ $debugger = $this->grav['debugger'];
+ $debugger->addMessage($message);
+
+ $this->grav['messages']->add($message, 'error');
+ }
+ $this->active = true;
+
+ // Set cache based on admin_cache option
+ $this->grav['cache']->setEnabled($this->config->get('plugins.admin.cache_enabled'));
+ $pages = $this->grav['pages'];
+ if (method_exists($pages, 'setCheckMethod')) {
+ // Force file hash checks to fix caching on moved and deleted pages.
+ $pages->setCheckMethod('hash');
+ }
+ }
+ }
+
+ /**
+ * [onPluginsInitialized:1001]
+ *
+ * If the admin plugin is set as active, initialize the admin
+ */
+ public function onPluginsInitialized()
+ {
+ // Only activate admin if we're inside the admin path.
+ if ($this->active) {
+ // Store this version.
+ $this->version = $this->getBlueprint()->get('version');
+
+ // Have a unique Admin-only Cache key
+ if (method_exists($this->grav['cache'], 'setKey')) {
+ /** @var Cache $cache */
+ $cache = $this->grav['cache'];
+ $cache_key = $cache->getKey();
+ $cache->setKey($cache_key . '$');
+ }
+
+ // Turn on Twig autoescaping
+ if (method_exists($this->grav['twig'], 'setAutoescape') && $this->grav['uri']->param('task') !== 'processmarkdown') {
+ $this->grav['twig']->setAutoescape(true);
+ }
+
+ $this->grav['debugger']->addMessage('Admin v' . $this->version);
+ $this->initializeAdmin();
+
+ // Disable Asset pipelining (old method - remove this after Grav is updated)
+ if (!method_exists($this->grav['assets'], 'setJsPipeline')) {
+ $this->config->set('system.assets.css_pipeline', false);
+ $this->config->set('system.assets.js_pipeline', false);
+ }
+
+ // Replace themes service with admin.
+ $this->grav['themes'] = function () {
+ return new Themes($this->grav);
+ };
+ }
+
+ // We need popularity no matter what
+ $this->popularity = new Popularity();
+
+ // Fire even to register permissions from other plugins
+ $this->grav->fireEvent('onAdminRegisterPermissions', new Event(['admin' => $this->admin]));
+ }
+
+ /**
+ * [onPageInitialized:0]
+ */
+ public function onPageInitialized()
+ {
+ $page = $this->grav['page'];
+
+ $template = $this->grav['uri']->param('tmpl');
+
+ if ($template) {
+ $page->template($template);
+ }
+ }
+
+ /**
+ * [onFormProcessed:0]
+ *
+ * Process the admin registration form.
+ *
+ * @param Event $event
+ */
+ public function onFormProcessed(Event $event)
+ {
+ $form = $event['form'];
+ $action = $event['action'];
+
+ switch ($action) {
+ case 'register_admin_user':
+
+ if (Admin::doAnyUsersExist()) {
+ throw new \RuntimeException('A user account already exists, please create an admin account manually.');
+ }
+
+ if (!$this->config->get('plugins.login.enabled')) {
+ throw new \RuntimeException($this->grav['language']->translate('PLUGIN_LOGIN.PLUGIN_LOGIN_DISABLED'));
+ }
+
+ $data = [];
+ $username = $form->value('username');
+
+ if ($form->value('password1') !== $form->value('password2')) {
+ $this->grav->fireEvent('onFormValidationError', new Event([
+ 'form' => $form,
+ 'message' => $this->grav['language']->translate('PLUGIN_LOGIN.PASSWORDS_DO_NOT_MATCH')
+ ]));
+ $event->stopPropagation();
+
+ return;
+ }
+
+ $data['password'] = $form->value('password1');
+
+ $fields = [
+ 'email',
+ 'fullname',
+ 'title'
+ ];
+
+ foreach ($fields as $field) {
+ // Process value of field if set in the page process.register_user
+ if (!isset($data[$field]) && $form->value($field)) {
+ $data[$field] = $form->value($field);
+ }
+ }
+
+ // Don't store plain text password or username (part of the filename).
+ unset($data['password1'], $data['password2'], $data['username']);
+
+ // Extra lowercase to ensure file is saved lowercase
+ $username = strtolower($username);
+
+ $inflector = new Inflector();
+
+ $data['fullname'] = $data['fullname'] ?? $inflector->titleize($username);
+ $data['title'] = $data['title'] ?? 'Administrator';
+ $data['state'] = 'enabled';
+ $data['access'] = ['admin' => ['login' => true, 'super' => true], 'site' => ['login' => true]];
+
+ /** @var UserCollectionInterface $users */
+ $users = $this->grav['accounts'];
+
+ // Create user object and save it
+ $user = $users->load($username);
+ $user->update($data);
+ $user->save();
+
+ //Login user
+ $this->grav['session']->user = $user;
+ unset($this->grav['user']);
+ $this->grav['user'] = $user;
+ $user->authenticated = true;
+ $user->authorized = $user->authorize('admin.login');
+
+ $messages = $this->grav['messages'];
+ $messages->add($this->grav['language']->translate('PLUGIN_ADMIN.LOGIN_LOGGED_IN'), 'info');
+ $this->grav->redirect($this->admin_route);
+
+ break;
+ }
+ }
+
+ /**
+ * [onShutdown:1000]
+ *
+ * Handles the shutdown
+ */
+ public function onShutdown()
+ {
+ if ($this->active) {
+ //only activate when Admin is active
+ if ($this->admin->shouldLoadAdditionalFilesInBackground()) {
+ $this->admin->loadAdditionalFilesInBackground();
+ }
+ } else {
+ //if popularity is enabled, track non-admin hits
+ if ($this->config->get('plugins.admin.popularity.enabled')) {
+ $this->popularity->trackHit();
+ }
+ }
+ }
+
+ /**
+ * [onAdminDashboard:0]
+ */
+ public function onAdminDashboard()
+ {
+ $this->grav['twig']->plugins_hooked_dashboard_widgets_top[] = ['template' => 'dashboard-maintenance'];
+ $this->grav['twig']->plugins_hooked_dashboard_widgets_top[] = ['template' => 'dashboard-statistics'];
+ $this->grav['twig']->plugins_hooked_dashboard_widgets_top[] = ['template' => 'dashboard-notifications'];
+ $this->grav['twig']->plugins_hooked_dashboard_widgets_top[] = ['template' => 'dashboard-feed'];
+ $this->grav['twig']->plugins_hooked_dashboard_widgets_main[] = ['template' => 'dashboard-pages'];
+ }
+
+
+ /**
+ * [onAdminTools:0]
+ *
+ * Provide the tools for the Tools page, currently only direct install
+ *
+ * @return Event
+ */
+ public function onAdminTools(Event $event)
+ {
+ $event['tools'] = array_merge($event['tools'], [
+ 'backups' => [['admin.maintenance', 'admin.super'], $this->grav['language']->translate('PLUGIN_ADMIN.BACKUPS')],
+ 'scheduler' => [['admin.super'], $this->grav['language']->translate('PLUGIN_ADMIN.SCHEDULER')],
+ 'logs' => [['admin.super'], $this->grav['language']->translate('PLUGIN_ADMIN.LOGS')],
+ 'reports' => [['admin.super'], $this->grav['language']->translate('PLUGIN_ADMIN.REPORTS')],
+ 'direct-install' => [['admin.super'], $this->grav['language']->translate('PLUGIN_ADMIN.DIRECT_INSTALL')],
+ ]);
+
+ return $event;
+ }
+
+ /**
+ * Sets longer path to the home page allowing us to have list of pages when we enter to pages section.
+ */
+ public function onPagesInitialized()
+ {
+ $config = $this->config;
+
+ // Force SSL with redirect if required
+ if ($config->get('system.force_ssl')) {
+ if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
+ $url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
+ $this->grav->redirect($url);
+ }
+ }
+
+ $this->session = $this->grav['session'];
+
+ // Set original route for the home page.
+ $home = '/' . trim($this->config->get('system.home.alias'), '/');
+
+ // set session variable if it's passed via the url
+ if ($this->uri->param('mode') === 'expert') {
+ $this->session->expert = true;
+ } elseif ($this->uri->param('mode') === 'normal') {
+ $this->session->expert = false;
+ } else {
+ // set the default if not set before
+ $this->session->expert = $this->session->expert ?? false;
+ }
+
+ /** @var Pages $pages */
+ $pages = $this->grav['pages'];
+
+ $this->grav['admin']->routes = $pages->routes();
+
+ // Remove default route from routes.
+ if (isset($this->grav['admin']->routes['/'])) {
+ unset($this->grav['admin']->routes['/']);
+ }
+
+ $page = $pages->dispatch('/', true);
+
+ // If page is null, the default page does not exist, and we cannot route to it
+ if ($page) {
+ $page->route($home);
+ }
+
+ // Make local copy of POST.
+ $post = $this->grav['uri']->post();
+
+ // Initialize Page Types
+ Pages::types();
+
+ // Handle tasks.
+ $this->admin->task = $task = $this->grav['task'];
+ if ($task) {
+ $this->initializeController($task, $post);
+ } elseif ($this->template === 'logs' && $this->route) {
+ // Display RAW error message.
+ echo $this->admin->logEntry();
+ exit();
+ }
+
+ $self = $this;
+
+ // make sure page is not frozen!
+ unset($this->grav['page']);
+
+ $this->admin->pagesCount();
+
+ // Replace page service with admin.
+ $this->grav['page'] = function () use ($self) {
+ $page = new Page();
+ $page->expires(0);
+
+ if ($this->grav['user']->authorize('admin.login')) {
+ $event = new Event(['page' => $page]);
+ $event = $this->grav->fireEvent('onAdminPage', $event);
+ $page = $event['page'];
+
+ if ($page->slug()) {
+ return $page;
+ }
+ }
+
+ // Look in the pages provided by the Admin plugin itself
+ if (file_exists(__DIR__ . "/pages/admin/{$self->template}.md")) {
+ $page->init(new \SplFileInfo(__DIR__ . "/pages/admin/{$self->template}.md"));
+ $page->slug(basename($self->template));
+ return $page;
+ }
+
+ // If not provided by Admin, lookup pages added by other plugins
+ $plugins = $this->grav['plugins'];
+ $locator = $this->grav['locator'];
+
+ foreach ($plugins as $plugin) {
+ if ($this->config->get("plugins.{$plugin->name}.enabled") !== true) {
+ continue;
+ }
+
+ $path = $locator->findResource("plugins://{$plugin->name}/admin/pages/{$self->template}.md");
+
+ if ($path) {
+ $page->init(new \SplFileInfo($path));
+ $page->slug(basename($self->template));
+
+ return $page;
+ }
+ }
+
+ return null;
+ };
+
+ if (empty($this->grav['page'])) {
+ if ($this->grav['user']->authenticated) {
+ $event = new Event(['page' => null]);
+ $event->page = null;
+ $event = $this->grav->fireEvent('onPageNotFound', $event);
+ /** @var PageInterface $page */
+ $page = $event->page;
+
+ if (!$page || !$page->routable()) {
+ $error_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/error.md');
+ $page = new Page();
+ $page->init(new \SplFileInfo($error_file));
+ $page->slug(basename($this->route));
+ $page->routable(true);
+ }
+
+ unset($this->grav['page']);
+ $this->grav['page'] = $page;
+ } else {
+ // Not Found and not logged in: Display login page.
+ $login_file = $this->grav['locator']->findResource('plugins://admin/pages/admin/login.md');
+ $page = new Page();
+ $page->init(new \SplFileInfo($login_file));
+ $page->slug(basename($this->route));
+ unset($this->grav['page']);
+ $this->grav['page'] = $page;
+ }
+ }
+
+ // Explicitly set a timestamp on assets
+ $this->grav['assets']->setTimestamp(substr(md5(GRAV_VERSION . $this->grav['config']->checksum()), 0, 10));
+ }
+
+ /**
+ * Handles initializing the assets
+ */
+ public function onAssetsInitialized()
+ {
+ // Disable Asset pipelining
+ $assets = $this->grav['assets'];
+ $assets->setJsPipeline(false);
+ $assets->setCssPipeline(false);
+ }
+
+ /**
+ * Add twig paths to plugin templates.
+ */
+ public function onTwigTemplatePaths()
+ {
+ $twig_paths = [];
+ $this->grav->fireEvent('onAdminTwigTemplatePaths', new Event(['paths' => &$twig_paths]));
+
+ $twig_paths[] = __DIR__ . '/themes/' . $this->theme . '/templates';
+
+ $this->grav['twig']->twig_paths = $twig_paths;
+ }
+
+ /**
+ * Set all twig variables for generating output.
+ */
+ public function onTwigSiteVariables()
+ {
+ $twig = $this->grav['twig'];
+ $page = $this->grav['page'];
+
+ $twig->twig_vars['location'] = $this->template;
+ $twig->twig_vars['base_url_relative_frontend'] = $twig->twig_vars['base_url_relative'] ?: '/';
+ $twig->twig_vars['admin_route'] = trim($this->admin_route, '/');
+ $twig->twig_vars['template_route'] = $this->template;
+ $twig->twig_vars['current_route'] = '/' . $twig->twig_vars['admin_route'] . '/' . $this->template . '/' . $this->route;
+ $twig->twig_vars['base_url_relative'] = $twig->twig_vars['base_url_simple'] . '/' . $twig->twig_vars['admin_route'];
+ $twig->twig_vars['current_url'] = rtrim($twig->twig_vars['base_url_relative'] . '/' . $this->template . '/' . $this->route, '/');
+ $theme_url = '/' . ltrim($this->grav['locator']->findResource('plugin://admin/themes/' . $this->theme,
+ false), '/');
+ $twig->twig_vars['theme_url'] = $theme_url;
+ $twig->twig_vars['preset_url'] = $twig->twig_vars['preset_url'] ?? $theme_url;
+ $twig->twig_vars['base_url'] = $twig->twig_vars['base_url_relative'];
+ $twig->twig_vars['base_path'] = GRAV_ROOT;
+ $twig->twig_vars['admin'] = $this->admin;
+ $twig->twig_vars['admin_version'] = $this->version;
+ $twig->twig_vars['logviewer'] = new LogViewer();
+ $twig->twig_vars['form_max_filesize'] = Utils::getUploadLimit() / 1024 / 1024;
+
+ $fa_icons_file = CompiledYamlFile::instance($this->grav['locator']->findResource('plugin://admin/themes/grav/templates/forms/fields/iconpicker/icons' . YAML_EXT));
+ $fa_icons = $fa_icons_file->content();
+ $fa_icons = array_map(function ($icon) {
+ //only pick used values
+ return ['id' => $icon['id'], 'unicode' => $icon['unicode']];
+ }, $fa_icons['icons']);
+
+ $twig->twig_vars['fa_icons'] = $fa_icons;
+
+ // add form if it exists in the page
+ $header = $page->header();
+
+ $forms = [];
+ if (isset($header->forms)) foreach ($header->forms as $key => $form) {
+ $forms[$key] = new Form($page, null, $form);
+ }
+ $twig->twig_vars['forms'] = $forms;
+
+ // preserve form validation
+ if (!isset($twig->twig_vars['form'])) {
+ if (isset($header->form)) {
+ $twig->twig_vars['form'] = new Form($page);
+ } elseif (isset($header->forms)) {
+ $twig->twig_vars['form'] = new Form($page, null, reset($header->forms));
+ }
+ }
+
+ // Gather Plugin-hooked nav items
+ $this->grav->fireEvent('onAdminMenu');
+
+ switch ($this->template) {
+ case 'dashboard':
+ $twig->twig_vars['popularity'] = $this->popularity;
+
+ // Gather Plugin-hooked dashboard items
+ $this->grav->fireEvent('onAdminDashboard');
+
+ break;
+ }
+
+ $flashData = $this->grav['session']->getFlashCookieObject(Admin::TMP_COOKIE_NAME);
+
+ if (isset($flashData->message)) {
+ $this->grav['messages']->add($flashData->message, $flashData->status);
+ }
+ }
+
+ // Add images to twig template paths to allow inclusion of SVG files
+ public function onTwigLoader()
+ {
+ $theme_paths = Grav::instance()['locator']->findResources('plugins://admin/themes/' . $this->theme . '/images');
+ foreach($theme_paths as $images_path) {
+ $this->grav['twig']->addPath($images_path, 'admin-images');
+ }
+ }
+
+ /**
+ * Add the Admin Twig Extensions
+ */
+ public function onTwigExtensions()
+ {
+ require_once __DIR__ . '/classes/Twig/AdminTwigExtension.php';
+
+ $this->grav['twig']->twig->addExtension(new AdminTwigExtension);
+ }
+
+ public function onAdminAfterSave(Event $event)
+ {
+ // Special case to redirect after changing the admin route to avoid 'breaking'
+ $obj = $event['object'];
+
+ if (null !== $obj && method_exists($obj, 'blueprints')) {
+ $blueprint = $obj->blueprints()->getFilename();
+
+ if ($blueprint === 'admin/blueprints' && isset($obj->route) && $this->admin_route !== $obj->route) {
+ $redirect = preg_replace('/^' . str_replace('/','\/',$this->admin_route) . '/',$obj->route,$this->uri->path());
+ $this->grav->redirect($redirect);
+ }
+ }
+ }
+
+ /**
+ * Convert some types where we want to process out of the standard config path
+ *
+ * @param Event $e
+ */
+ public function onAdminData(Event $e)
+ {
+ $type = $e['type'] ?? null;
+ switch ($type) {
+ case 'tools/scheduler':
+ $e['type'] = 'config/scheduler';
+ break;
+ case 'tools':
+ case 'tools/backups':
+ $e['type'] = 'config/backups';
+ break;
+ }
+ }
+
+ public function onOutputGenerated()
+ {
+ // Clear flash objects for previously uploaded files whenever the user switches page or reloads
+ // ignoring any JSON / extension call
+ if ($this->admin->task !== 'save' && empty($this->uri->extension())) {
+ // Discard any previously uploaded files session and remove all uploaded files.
+ if ($flash = $this->session->getFlashObject('files-upload')) {
+ $flash = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($flash));
+ foreach ($flash as $key => $value) {
+ if ($key !== 'tmp_name') {
+ continue;
+ }
+ @unlink($value);
+ }
+ }
+ }
+ }
+
+ /**
+ * Initial stab at registering permissions (WIP)
+ *
+ * @param Event $e
+ */
+ public function onAdminRegisterPermissions(Event $e)
+ {
+ $admin = $e['admin'];
+ $permissions = [
+ 'admin.super' => 'boolean',
+ 'admin.login' => 'boolean',
+ 'admin.cache' => 'boolean',
+ 'admin.configuration' => 'boolean',
+ 'admin.configuration_system' => 'boolean',
+ 'admin.configuration_site' => 'boolean',
+ 'admin.configuration_media' => 'boolean',
+ 'admin.configuration_info' => 'boolean',
+ 'admin.settings' => 'boolean',
+ 'admin.pages' => 'boolean',
+ 'admin.maintenance' => 'boolean',
+ 'admin.statistics' => 'boolean',
+ 'admin.plugins' => 'boolean',
+ 'admin.themes' => 'boolean',
+ 'admin.tools' => 'boolean',
+ 'admin.users' => 'boolean',
+ ];
+ $admin->addPermissions($permissions);
+ }
+
+ /**
+ * Check if the current route is under the admin path
+ *
+ * @return bool
+ */
+ public function isAdminPath()
+ {
+ $route = $this->uri->route();
+
+ return $route === $this->base || 0 === strpos($route, $this->base . '/');
+ }
+
+ /**
+ * Helper function to replace Pages::Types()
+ * and to provide an event to manipulate the data
+ *
+ * Dispatches 'onAdminPageTypes' event
+ * with 'types' data member which is a
+ * reference to the data
+ */
+ public static function pagesTypes()
+ {
+ $types = Pages::types();
+
+ // First filter by configuration
+ $hideTypes = Grav::instance()['config']->get('plugins.admin.hide_page_types', []);
+ foreach ((array) $hideTypes as $type) {
+ unset($types[$type]);
+ }
+
+ // Allow manipulating of the data by event
+ $e = new Event(['types' => &$types]);
+ Grav::instance()->fireEvent('onAdminPageTypes', $e);
+
+ return $types;
+ }
+
+ /**
+ * Helper function to replace Pages::modularTypes()
+ * and to provide an event to manipulate the data
+ *
+ * Dispatches 'onAdminModularPageTypes' event
+ * with 'types' data member which is a
+ * reference to the data
+ */
+ public static function pagesModularTypes()
+ {
+ $types = Pages::modularTypes();
+
+ // First filter by configuration
+ $hideTypes = (array) Grav::instance()['config']->get('plugins.admin.hide_modular_page_types', []);
+ foreach ($hideTypes as $type) {
+ unset($types[$type]);
+ }
+
+ // Allow manipulating of the data by event
+ $e = new Event(['types' => &$types]);
+ Grav::instance()->fireEvent('onAdminModularPageTypes', $e);
+
+ return $types;
+ }
+
+ /**
+ * Validate a value. Currently validates
+ *
+ * - 'user' for username format and username availability.
+ * - 'password1' for password format
+ * - 'password2' for equality to password1
+ *
+ * @param string $type The field type
+ * @param string $value The field value
+ * @param string $extra Any extra value required
+ *
+ * @return bool
+ */
+ protected function validate($type, $value, $extra = '')
+ {
+ /** @var Login $login */
+ $login = $this->grav['login'];
+
+ return $login->validateField($type, $value, $extra);
+ }
+
+ protected function initializeController($task, $post)
+ {
+ $controller = new AdminController();
+ $controller->initialize($this->grav, $this->template, $task, $this->route, $post);
+ $controller->execute();
+ $controller->redirect();
+ }
+
+ /**
+ * Initialize the admin.
+ *
+ * @throws \RuntimeException
+ */
+ protected function initializeAdmin()
+ {
+ $this->enable([
+ 'onTwigExtensions' => ['onTwigExtensions', 1000],
+ 'onPagesInitialized' => ['onPagesInitialized', 1000],
+ 'onTwigLoader' => ['onTwigLoader', 1000],
+ 'onTwigTemplatePaths' => ['onTwigTemplatePaths', 1000],
+ 'onTwigSiteVariables' => ['onTwigSiteVariables', 1000],
+ 'onAssetsInitialized' => ['onAssetsInitialized', 1000],
+ 'onAdminRegisterPermissions' => ['onAdminRegisterPermissions', 0],
+ 'onOutputGenerated' => ['onOutputGenerated', 0],
+ 'onAdminAfterSave' => ['onAdminAfterSave', 0],
+ 'onAdminData' => ['onAdminData', 0],
+ ]);
+
+ // Autoload classes
+ require_once __DIR__ . '/vendor/autoload.php';
+
+
+ // Check for required plugins
+ if (!$this->grav['config']->get('plugins.login.enabled') || !$this->grav['config']->get('plugins.form.enabled') || !$this->grav['config']->get('plugins.email.enabled')) {
+ throw new \RuntimeException('One of the required plugins is missing or not enabled');
+ }
+
+ // Initialize Admin Language if needed
+ /** @var Language $language */
+ $language = $this->grav['language'];
+ if ($language->enabled() && empty($this->grav['session']->admin_lang)) {
+ $this->grav['session']->admin_lang = $language->getLanguage();
+ }
+
+ // Decide admin template and route.
+ $path = trim(substr($this->uri->route(), strlen($this->base)), '/');
+
+ if (empty($this->template)) {
+ $this->template = 'dashboard';
+ }
+
+ // Can't access path directly...
+ if ($path && $path !== 'register') {
+ $array = explode('/', $path, 2);
+ $this->template = array_shift($array);
+ $this->route = array_shift($array);
+ }
+
+ // Initialize admin class (also registers it to Grav services).
+ $this->admin = new Admin($this->grav, $this->admin_route, $this->template, $this->route);
+
+ // Double check we have system.yaml, site.yaml etc
+ $config_path = $this->grav['locator']->findResource('user://config');
+ foreach ($this->admin::configurations() as $config_file) {
+ $config_file = "{$config_path}/{$config_file}.yaml";
+ if (!file_exists($config_file)) {
+ touch($config_file);
+ }
+ }
+
+ // Get theme for admin
+ $this->theme = $this->config->get('plugins.admin.theme', 'grav');
+
+ $assets = $this->grav['assets'];
+ $translations = 'this.GravAdmin = this.GravAdmin || {}; if (!this.GravAdmin.translations) this.GravAdmin.translations = {}; ' . PHP_EOL . 'this.GravAdmin.translations.PLUGIN_ADMIN = {';
+
+ // Enable language translations
+ $translations_actual_state = $this->config->get('system.languages.translations');
+ $this->config->set('system.languages.translations', true);
+
+ $strings = [
+ 'EVERYTHING_UP_TO_DATE',
+ 'UPDATES_ARE_AVAILABLE',
+ 'IS_AVAILABLE_FOR_UPDATE',
+ 'AND',
+ 'IS_NOW_AVAILABLE',
+ 'CURRENT',
+ 'UPDATE_GRAV_NOW',
+ 'TASK_COMPLETED',
+ 'UPDATE',
+ 'UPDATING_PLEASE_WAIT',
+ 'GRAV_SYMBOLICALLY_LINKED',
+ 'OF_YOUR',
+ 'OF_THIS',
+ 'HAVE_AN_UPDATE_AVAILABLE',
+ 'UPDATE_AVAILABLE',
+ 'UPDATES_AVAILABLE',
+ 'FULLY_UPDATED',
+ 'DAYS',
+ 'PAGE_MODES',
+ 'PAGE_TYPES',
+ 'ACCESS_LEVELS',
+ 'NOTHING_TO_SAVE',
+ 'FILE_UNSUPPORTED',
+ 'FILE_ERROR_ADD',
+ 'FILE_ERROR_UPLOAD',
+ 'DROP_FILES_HERE_TO_UPLOAD',
+ 'DELETE',
+ 'UNSET',
+ 'INSERT',
+ 'METADATA',
+ 'VIEW',
+ 'UNDO',
+ 'REDO',
+ 'HEADERS',
+ 'BOLD',
+ 'ITALIC',
+ 'STRIKETHROUGH',
+ 'SUMMARY_DELIMITER',
+ 'LINK',
+ 'IMAGE',
+ 'BLOCKQUOTE',
+ 'UNORDERED_LIST',
+ 'ORDERED_LIST',
+ 'EDITOR',
+ 'PREVIEW',
+ 'FULLSCREEN',
+ 'MODULAR',
+ 'NON_MODULAR',
+ 'VISIBLE',
+ 'NON_VISIBLE',
+ 'ROUTABLE',
+ 'NON_ROUTABLE',
+ 'PUBLISHED',
+ 'NON_PUBLISHED',
+ 'PLUGINS',
+ 'THEMES',
+ 'ALL',
+ 'FROM',
+ 'TO',
+ 'DROPZONE_CANCEL_UPLOAD',
+ 'DROPZONE_CANCEL_UPLOAD_CONFIRMATION',
+ 'DROPZONE_DEFAULT_MESSAGE',
+ 'DROPZONE_FALLBACK_MESSAGE',
+ 'DROPZONE_FALLBACK_TEXT',
+ 'DROPZONE_FILE_TOO_BIG',
+ 'DROPZONE_INVALID_FILE_TYPE',
+ 'DROPZONE_MAX_FILES_EXCEEDED',
+ 'DROPZONE_REMOVE_FILE',
+ 'DROPZONE_RESPONSE_ERROR'
+ ];
+
+ foreach ($strings as $string) {
+ $separator = (end($strings) === $string) ? '' : ',';
+ $translations .= '"' . $string . '": "' . htmlspecialchars($this->admin::translate('PLUGIN_ADMIN.' . $string)) . '"' . $separator;
+ }
+
+ $translations .= '};';
+
+ $translations .= 'this.GravAdmin.translations.PLUGIN_FORM = {';
+ $strings = ['RESOLUTION_MIN', 'RESOLUTION_MAX'];
+ foreach ($strings as $string) {
+ $separator = (end($strings) === $string) ? '' : ',';
+ $translations .= '"' . $string . '": "' . $this->admin::translate('PLUGIN_FORM.' . $string) . '"' . $separator;
+ }
+ $translations .= '};';
+
+ $translations .= 'this.GravAdmin.translations.GRAV_CORE = {';
+ $strings = [
+ 'NICETIME.SECOND',
+ 'NICETIME.MINUTE',
+ 'NICETIME.HOUR',
+ 'NICETIME.DAY',
+ 'NICETIME.WEEK',
+ 'NICETIME.MONTH',
+ 'NICETIME.YEAR',
+ 'CRON.EVERY',
+ 'CRON.EVERY_HOUR',
+ 'CRON.EVERY_MINUTE',
+ 'CRON.EVERY_DAY_OF_WEEK',
+ 'CRON.EVERY_DAY_OF_MONTH',
+ 'CRON.EVERY_MONTH',
+ 'CRON.TEXT_PERIOD',
+ 'CRON.TEXT_MINS',
+ 'CRON.TEXT_TIME',
+ 'CRON.TEXT_DOW',
+ 'CRON.TEXT_MONTH',
+ 'CRON.TEXT_DOM',
+ 'CRON.ERROR1',
+ 'CRON.ERROR2',
+ 'CRON.ERROR3',
+ 'CRON.ERROR4',
+ 'MONTHS_OF_THE_YEAR',
+ 'DAYS_OF_THE_WEEK'
+ ];
+ foreach ($strings as $string) {
+ $separator = (end($strings) === $string) ? '' : ',';
+ $translations .= '"' . $string . '": ' . json_encode($this->admin::translate('GRAV.'.$string)) . $separator;
+ }
+ $translations .= '};';
+
+ // set the actual translations state back
+ $this->config->set('system.languages.translations', $translations_actual_state);
+
+ $assets->addInlineJs($translations);
+ }
+}
diff --git a/user/plugins/admin/admin.yaml b/user/plugins/admin/admin.yaml
new file mode 100644
index 0000000..56b3977
--- /dev/null
+++ b/user/plugins/admin/admin.yaml
@@ -0,0 +1,48 @@
+enabled: true
+route: '/admin'
+cache_enabled: false
+theme: grav
+logo_text: ''
+body_classes: ''
+content_padding: true
+twofa_enabled: true
+log_viewer_files: ['grav', 'email']
+sidebar:
+ activate: tab
+ hover_delay: 100
+ size: auto
+dashboard:
+ days_of_stats: 7
+widgets:
+ dashboard-maintenance: true
+ dashboard-statistics: true
+ dashboard-notifications: true
+ dashboard-feed: true
+ dashboard-pages: true
+pages:
+ show_parents: both
+ show_modular: true
+session:
+ timeout: 1800
+warnings:
+ delete_page: true
+ secure_delete: false
+edit_mode: normal
+frontend_preview_target: inline
+show_github_msg: true
+pages_list_display_field: title
+google_fonts: false
+admin_icons: line-awesome
+enable_auto_updates_check: true
+notifications:
+ feed: true
+ dashboard: true
+ plugins: true
+ themes: true
+popularity:
+ enabled: true
+ ignore: ['/test*','/modular']
+ history:
+ daily: 30
+ monthly: 12
+ visitors: 20
diff --git a/user/plugins/admin/assets/admin-dashboard.png b/user/plugins/admin/assets/admin-dashboard.png
new file mode 100644
index 0000000..599743e
Binary files /dev/null and b/user/plugins/admin/assets/admin-dashboard.png differ
diff --git a/user/plugins/admin/blueprints.yaml b/user/plugins/admin/blueprints.yaml
new file mode 100644
index 0000000..f00d935
--- /dev/null
+++ b/user/plugins/admin/blueprints.yaml
@@ -0,0 +1,528 @@
+name: Admin Panel
+slug: admin
+type: plugin
+version: 1.9.15
+testing: false
+description: Adds an advanced administration panel to manage your site
+icon: empire
+author:
+ name: Team Grav
+ email: devs@getgrav.org
+ url: http://getgrav.org
+homepage: https://github.com/getgrav/grav-plugin-admin
+keywords: admin, plugin, manager, panel
+bugs: https://github.com/getgrav/grav-plugin-admin/issues
+docs: https://github.com/getgrav/grav-plugin-admin/blob/develop/README.md
+license: MIT
+
+dependencies:
+ - { name: grav, version: '>=1.6.22' }
+ - { name: form, version: '>=3.0.0' }
+ - { name: login, version: '>=3.0.0' }
+ - { name: email, version: '>=3.0.0' }
+
+form:
+ validation: loose
+ fields:
+ Basics:
+ type: section
+ title: Basics
+ underline: false
+
+ enabled:
+ type: hidden
+ label: PLUGIN_ADMIN.PLUGIN_STATUS
+ highlight: 1
+ default: 0
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+
+ cache_enabled:
+ type: toggle
+ label: PLUGIN_ADMIN.ADMIN_CACHING
+ help: PLUGIN_ADMIN.ADMIN_CACHING_HELP
+ highlight: 0
+ options:
+ 1: PLUGIN_ADMIN.YES
+ 0: PLUGIN_ADMIN.NO
+ validate:
+ type: bool
+
+ twofa_enabled:
+ type: toggle
+ label: PLUGIN_LOGIN.2FA_TITLE
+ help: PLUGIN_LOGIN.2FA_ENABLED_HELP
+ default: 1
+ highlight: 1
+ options:
+ 1: PLUGIN_ADMIN.YES
+ 0: PLUGIN_ADMIN.NO
+ validate:
+ type: bool
+
+ route:
+ type: text
+ label: Administrator path
+ size: medium
+ placeholder: "Default route for administrator (relative to base)"
+ help: If you want to change the URL for the administrator, you can provide a path here
+
+ logo_text:
+ type: text
+ label: Logo text
+ size: medium
+ placeholder: "Grav"
+ help: Text to display in place of the default Grav logo
+
+ content_padding:
+ type: toggle
+ label: PLUGIN_ADMIN.CONTENT_PADDING
+ help: PLUGIN_ADMIN.CONTENT_PADDING_HELP
+ highlight: 1
+ options:
+ 1: PLUGIN_ADMIN.YES
+ 0: PLUGIN_ADMIN.NO
+ validate:
+ type: bool
+
+ body_classes:
+ type: text
+ label: Body classes
+ size: medium
+ help: Add a space separated name of custom body classes
+
+ sidebar.activate:
+ type: select
+ label: Sidebar Activation
+ help: Control how the sidebar is activated
+ size: small
+ default: tab
+ options:
+ tab: Tab
+ hover: Hover
+
+ sidebar.hover_delay:
+ type: text
+ size: x-small
+ append: millseconds
+ label: Hover delay
+ default: 500
+ validate:
+ type: number
+ min: 1
+
+
+ sidebar.size:
+ type: select
+ label: Sidebar Size
+ help: Control the width of the sidebar
+ size: medium
+ default: auto
+ options:
+ auto: Automatic width
+ small: Small width
+
+ theme:
+ type: hidden
+ label: Theme
+ default: grav
+
+ edit_mode:
+ type: select
+ label: Edit mode
+ size: small
+ default: normal
+ options:
+ normal: Normal
+ expert: Expert
+ help: Auto will use blueprint if available, if none found, it will use "Expert" mode.
+
+ frontend_preview_target:
+ type: select
+ label: Preview pages target
+ size: medium
+ default: inline
+ options:
+ inline: Inline in Admin
+ _blank: New tab
+ _self: Current tab
+
+ pages.show_parents:
+ type: select
+ size: medium
+ label: Parent dropdown
+ highlight: 1
+ options:
+ both: Show slug and folder
+ folder: Show folder
+ fullpath: Show fullpath
+
+ pages.parents_levels:
+ type: text
+ label: Parents Levels
+ size: small
+ help: The number of levels to show in parent select list
+
+ pages.show_modular:
+ type: toggle
+ label: Modular parents
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Show modular pages in the parent select list
+
+ google_fonts:
+ type: toggle
+ label: Use Google Fonts
+ highlight: 0
+ default: 0
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Use Google custom fonts. Disable this to use Helvetica. Useful when using Cyrillic and other languages with unsupported characters.
+
+ show_beta_msg:
+ type: hidden
+
+ show_github_msg:
+ type: toggle
+ label: Show GitHub Link
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Show the "Found an issue? Please report it on GitHub." message.
+
+ pages_list_display_field:
+ type: text
+ size: small
+ label: Pages List Display Field
+ help: "Field of the page to use in the list of pages if present. Defaults/Fallback to title."
+
+ enable_auto_updates_check:
+ type: toggle
+ label: Automatically check for updates
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Shows an informative message, in the admin panel, when an update is available.
+
+ session.timeout:
+ type: text
+ size: small
+ label: Session Timeout
+ append: secs
+ help: "Sets the session timeout in seconds"
+ validate:
+ type: number
+ min: 1
+
+ warnings.delete_page:
+ type: toggle
+ label: Warn on page delete
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Ask the user confirmation when deleting a page
+
+ warnings.secure_delete:
+ type: toggle
+ label: Secure Delete
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Shows the user a field to enter the word DELETE and enable the confirm delete button.
+
+ hide_page_types:
+ type: array
+ label: Hide page types in Admin
+ value_only: true
+
+ hide_modular_page_types:
+ type: array
+ label: Hide modular page types in Admin
+ value_only: true
+
+ log_viewer_files:
+ type: selectize
+ size: medium
+ label: PLUGIN_ADMIN.LOG_VIEWER_FILES
+ help: PLUGIN_ADMIN.LOG_VIEWER_FILES_HELP
+ classes: fancy
+ validate:
+ type: commalist
+
+ MediaResize:
+ type: section
+ title: Page Media Image Resizer
+ underline: true
+
+ MediaResizeNote:
+ type: spacer
+ text: PLUGIN_ADMIN.PAGEMEDIA_RESIZER
+ markdown: true
+
+ pagemedia.resize_width:
+ type: number
+ size: x-small
+ append: pixels
+ label: Resize Width
+ default: 0
+ validate:
+ type: number
+ help: Resize wide images down to the set value
+
+ pagemedia.resize_height:
+ type: number
+ size: x-small
+ append: pixels
+ label: Resize Height
+ default: 0
+ validate:
+ type: number
+ help: Resize tall images down to the set value
+
+ pagemedia.res_min_width:
+ type: number
+ size: x-small
+ append: pixels
+ label: Resolution Min Width
+ default: 0
+ validate:
+ type: number
+ help: The minimum width allowed for an image to be added
+
+ pagemedia.res_min_height:
+ type: number
+ size: x-small
+ append: pixels
+ label: Resolution Min Height
+ default: 0
+ validate:
+ type: number
+ help: The minimum height allowed for an image to be added
+
+ pagemedia.res_max_width:
+ type: number
+ size: x-small
+ append: pixels
+ label: Resolution Max Width
+ default: 0
+ validate:
+ type: number
+ help: The maximum width allowed for an image to be added
+
+ pagemedia.res_max_height:
+ type: number
+ size: x-small
+ append: pixels
+ label: Resolution Max Height
+ default: 0
+ validate:
+ type: number
+ help: The maximum height allowed for an image to be added
+
+
+ pagemedia.resize_quality:
+ type: number
+ size: x-small
+ append: 0...1
+ label: Resize Quality
+ default: 0.8
+ validate:
+ type: number
+ step: 0.01
+ help: The quality to use when resizing an image. Between 0 and 1 value.
+
+ Dashboard:
+ type: section
+ title: Dashboard
+ underline: true
+
+ widgets.dashboard-maintenance:
+ type: toggle
+ label: Maintenance Widget
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Display dashboard maintenance widget
+
+ widgets.dashboard-statistics:
+ type: toggle
+ label: Statistics Widget
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Display dashboard statistics widget
+
+ widgets.dashboard-notifications:
+ type: toggle
+ label: Notifications Feed Widget
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Display dashboard notifications feed widget
+
+ widgets.dashboard-feed:
+ type: toggle
+ label: News Feed Widget
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Display dashboard news feed widget
+
+ widgets.dashboard-pages:
+ type: toggle
+ label: Latest Pages Widget
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Display dashboard latest pages widget
+
+ Notifications:
+ type: section
+ title: Notifications
+ underline: true
+
+ notifications.feed:
+ type: toggle
+ label: Feed Notifications
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Display feed-based notifications
+
+ notifications.dashboard:
+ type: toggle
+ label: Dashboard Notifications
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Display dashboard-based notifications
+
+ notifications.plugins:
+ type: toggle
+ label: Plugins Notifications
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Display plugins-targeted notifications
+
+ notifications.themes:
+ type: toggle
+ label: Themes Notifications
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Display themes-targeted notifications
+
+ Popularity:
+ type: section
+ title: Popularity
+ underline: true
+
+ popularity.enabled:
+ type: toggle
+ label: Visitor tracking
+ highlight: 1
+ default: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+ help: Enable the visitors stats collecting feature
+
+ dashboard.days_of_stats:
+ type: text
+ label: Days of stats
+ append: days
+ size: x-small
+ default: 7
+ help: Keep stats for the specified number of days, then drop them
+ validate:
+ type: int
+
+ popularity.ignore:
+ type: array
+ label: Ignore
+ size: large
+ help: "URLs to ignore"
+ default: ['/test*','/modular']
+ value_only: true
+ placeholder_value: /ignore-this-route
+
+ popularity.history.daily:
+ type: hidden
+ label: Daily history
+ default: 30
+
+ popularity.history.monthly:
+ type: hidden
+ label: Monthly history
+ default: 12
+
+ popularity.history.visitors:
+ type: hidden
+ label: Visitors history
+ default: 20
diff --git a/user/plugins/admin/blueprints/admin/pages/modular_new.yaml b/user/plugins/admin/blueprints/admin/pages/modular_new.yaml
new file mode 100644
index 0000000..85aa7b0
--- /dev/null
+++ b/user/plugins/admin/blueprints/admin/pages/modular_new.yaml
@@ -0,0 +1,52 @@
+rules:
+ slug:
+ pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
+ min: 1
+ max: 200
+
+form:
+ validation: loose
+ fields:
+
+ section:
+ type: section
+ title: PLUGIN_ADMIN.ADD_MODULAR_CONTENT
+
+ title:
+ type: text
+ label: PLUGIN_ADMIN.PAGE_TITLE
+ validate:
+ required: true
+
+ folder:
+ type: text
+ label: PLUGIN_ADMIN.FOLDER_NAME
+ validate:
+ rule: slug
+ required: true
+
+ route:
+ type: parents
+ label: PLUGIN_ADMIN.PAGE
+ classes: fancy
+ validate:
+ required: true
+
+ name:
+ type: select
+ classes: fancy
+ label: PLUGIN_ADMIN.MODULAR_TEMPLATE
+ help: PLUGIN_ADMIN.PAGE_FILE_HELP
+ default: default
+ data-options@: '\Grav\Plugin\AdminPlugin::pagesModularTypes'
+ validate:
+ required: true
+
+ modular:
+ type: hidden
+ default: 1
+ validate:
+ type: bool
+
+ blueprint:
+ type: blueprint
diff --git a/user/plugins/admin/blueprints/admin/pages/modular_raw.yaml b/user/plugins/admin/blueprints/admin/pages/modular_raw.yaml
new file mode 100644
index 0000000..abd2193
--- /dev/null
+++ b/user/plugins/admin/blueprints/admin/pages/modular_raw.yaml
@@ -0,0 +1,101 @@
+rules:
+ slug:
+ pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
+ min: 1
+ max: 200
+
+form:
+ validation: loose
+ fields:
+
+ tabs:
+ type: tabs
+ active: 1
+
+ fields:
+ content:
+ type: tab
+ title: PLUGIN_ADMIN.CONTENT
+
+ fields:
+ frontmatter:
+ classes: frontmatter
+ type: editor
+ label: PLUGIN_ADMIN.FRONTMATTER
+ autofocus: true
+ codemirror:
+ mode: 'yaml'
+ indentUnit: 4
+ autofocus: true
+ indentWithTabs: false
+ lineNumbers: true
+ styleActiveLine: true
+ gutters: ['CodeMirror-lint-markers']
+ lint: true
+
+ content:
+ type: markdown
+
+ header.media_order:
+ type: pagemedia
+ label: PLUGIN_ADMIN.PAGE_MEDIA
+
+ options:
+ type: tab
+ title: PLUGIN_ADMIN.OPTIONS
+
+ fields:
+
+ columns:
+ type: columns
+
+ fields:
+ column1:
+ type: column
+
+ fields:
+
+ ordering:
+ type: toggle
+ label: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX
+ help: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX_HELP
+ highlight: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+
+ folder:
+ type: text
+ label: PLUGIN_ADMIN.FILENAME
+ validate:
+ rule: slug
+ required: true
+
+ route:
+ type: parents
+ label: PLUGIN_ADMIN.PARENT
+ classes: fancy
+ validate:
+ required: true
+
+ name:
+ type: select
+ classes: fancy
+ label: PLUGIN_ADMIN.MODULAR_TEMPLATE
+ default: default
+ data-options@: '\Grav\Plugin\AdminPlugin::pagesModularTypes'
+ validate:
+ required: true
+
+ column2:
+ type: column
+
+ fields:
+ order:
+ type: order
+ label: PLUGIN_ADMIN.ORDERING
+
+ blueprint:
+ type: blueprint
diff --git a/user/plugins/admin/blueprints/admin/pages/move.yaml b/user/plugins/admin/blueprints/admin/pages/move.yaml
new file mode 100644
index 0000000..89fa414
--- /dev/null
+++ b/user/plugins/admin/blueprints/admin/pages/move.yaml
@@ -0,0 +1,7 @@
+form:
+ validation: loose
+ fields:
+ route:
+ type: parents
+ label: PLUGIN_ADMIN.PARENT
+ classes: fancy
diff --git a/user/plugins/admin/blueprints/admin/pages/new.yaml b/user/plugins/admin/blueprints/admin/pages/new.yaml
new file mode 100644
index 0000000..d62c6ae
--- /dev/null
+++ b/user/plugins/admin/blueprints/admin/pages/new.yaml
@@ -0,0 +1,62 @@
+rules:
+ slug:
+ pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
+ min: 1
+ max: 200
+
+form:
+ validation: loose
+ fields:
+
+ section:
+ type: section
+ title: PLUGIN_ADMIN.ADD_PAGE
+
+ title:
+ type: text
+ label: PLUGIN_ADMIN.PAGE_TITLE
+ help: PLUGIN_ADMIN.PAGE_TITLE_HELP
+ validate:
+ required: true
+
+ folder:
+ type: text
+ label: PLUGIN_ADMIN.FOLDER_NAME
+ help: PLUGIN_ADMIN.FOLDER_NAME_HELP
+ validate:
+ rule: slug
+ required: true
+
+ route:
+ type: parents
+ label: PLUGIN_ADMIN.PARENT_PAGE
+ classes: fancy
+ validate:
+ required: true
+
+ name:
+ type: select
+ classes: fancy
+ label: PLUGIN_ADMIN.PAGE_FILE
+ help: PLUGIN_ADMIN.PAGE_FILE_HELP
+ data-options@: '\Grav\Plugin\AdminPlugin::pagesTypes'
+ data-default@: '\Grav\Plugin\Admin\Admin::getLastPageName'
+ validate:
+ required: true
+
+ visible:
+ type: toggle
+ label: PLUGIN_ADMIN.VISIBLE
+ help: PLUGIN_ADMIN.VISIBLE_HELP
+ highlight: ''
+ default: ''
+ options:
+ '': Auto
+ 1: PLUGIN_ADMIN.YES
+ 0: PLUGIN_ADMIN.NO
+ validate:
+ type: bool
+ required: true
+
+ blueprint:
+ type: blueprint
diff --git a/user/plugins/admin/blueprints/admin/pages/new_folder.yaml b/user/plugins/admin/blueprints/admin/pages/new_folder.yaml
new file mode 100644
index 0000000..9db58f2
--- /dev/null
+++ b/user/plugins/admin/blueprints/admin/pages/new_folder.yaml
@@ -0,0 +1,31 @@
+rules:
+ slug:
+ pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
+ min: 1
+ max: 200
+
+form:
+ validation: loose
+ fields:
+
+ section:
+ type: section
+ title: PLUGIN_ADMIN.ADD_FOLDER
+
+ folder:
+ type: text
+ label: PLUGIN_ADMIN.FOLDER_NAME
+ help: PLUGIN_ADMIN.FOLDER_NAME_HELP
+ validate:
+ rule: slug
+ required: true
+
+ route:
+ type: parents
+ label: PLUGIN_ADMIN.PARENT_PAGE
+ classes: fancy
+ validate:
+ required: true
+
+ blueprint:
+ type: blueprint
diff --git a/user/plugins/admin/blueprints/admin/pages/raw.yaml b/user/plugins/admin/blueprints/admin/pages/raw.yaml
new file mode 100644
index 0000000..788e9e2
--- /dev/null
+++ b/user/plugins/admin/blueprints/admin/pages/raw.yaml
@@ -0,0 +1,106 @@
+rules:
+ slug:
+ pattern: '[a-zA-Zа-яA-Я0-9_\-]+'
+ min: 1
+ max: 200
+
+form:
+ validation: loose
+ fields:
+
+ tabs:
+ type: tabs
+ active: 1
+
+ fields:
+ content:
+ type: tab
+ title: PLUGIN_ADMIN.CONTENT
+
+ fields:
+ xss_check:
+ type: xss
+
+ frontmatter:
+ classes: frontmatter
+ type: editor
+ label: PLUGIN_ADMIN.FRONTMATTER
+ autofocus: true
+ codemirror:
+ mode: 'yaml'
+ indentUnit: 4
+ autofocus: true
+ indentWithTabs: false
+ lineNumbers: true
+ styleActiveLine: true
+ gutters: ['CodeMirror-lint-markers']
+ lint: true
+
+ content:
+ type: markdown
+
+ header.media_order:
+ type: pagemedia
+ label: PLUGIN_ADMIN.PAGE_MEDIA
+
+ options:
+ type: tab
+ title: PLUGIN_ADMIN.OPTIONS
+
+ fields:
+
+ columns:
+ type: columns
+
+ fields:
+ column1:
+ type: column
+
+ fields:
+
+ ordering:
+ type: toggle
+ label: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX
+ help: PLUGIN_ADMIN.FOLDER_NUMERIC_PREFIX_HELP
+ highlight: 1
+ options:
+ 1: PLUGIN_ADMIN.ENABLED
+ 0: PLUGIN_ADMIN.DISABLED
+ validate:
+ type: bool
+
+ folder:
+ type: text
+ label: PLUGIN_ADMIN.FOLDER_NAME
+ help: PLUGIN_ADMIN.FOLDER_NAME_HELP
+ validate:
+ rule: slug
+ required: true
+
+ route:
+ type: parents
+ label: PLUGIN_ADMIN.PARENT
+ classes: fancy
+ validate:
+ required: true
+
+ name:
+ type: select
+ classes: fancy
+ label: PLUGIN_ADMIN.DISPLAY_TEMPLATE
+ help: PLUGIN_ADMIN.DISPLAY_TEMPLATE_HELP
+ default: default
+ data-options@: '\Grav\Plugin\AdminPlugin::pagesTypes'
+ validate:
+ required: true
+
+ column2:
+ type: column
+
+ fields:
+ order:
+ type: order
+ label: PLUGIN_ADMIN.ORDERING
+
+ blueprint:
+ type: blueprint
diff --git a/user/plugins/admin/blueprints/config/media.yaml b/user/plugins/admin/blueprints/config/media.yaml
new file mode 100644
index 0000000..ba55868
--- /dev/null
+++ b/user/plugins/admin/blueprints/config/media.yaml
@@ -0,0 +1,36 @@
+title: PLUGIN_ADMIN.MEDIA
+form:
+ validation: loose
+ fields:
+ 'types':
+ name: medias
+ type: list
+ label: PLUGIN_ADMIN.MEDIA_TYPES
+ style: vertical
+ key: extension
+ controls: both
+ collapsed: true
+
+ fields:
+ .extension:
+ type: key
+ label: PLUGIN_ADMIN.FILE_EXTENSION
+ .type:
+ type: text
+ label: PLUGIN_ADMIN.TYPE
+ .thumb:
+ type: text
+ label: PLUGIN_ADMIN.THUMB
+ .mime:
+ type: text
+ label: PLUGIN_ADMIN.MIME_TYPE
+ validate:
+ type: lower
+ .image:
+ type: textarea
+ yaml: true
+ label: PLUGIN_ADMIN.IMAGE_OPTIONS
+ validate:
+ type: yaml
+
+
diff --git a/user/plugins/admin/classes/Twig/AdminTwigExtension.php b/user/plugins/admin/classes/Twig/AdminTwigExtension.php
new file mode 100644
index 0000000..073aef2
--- /dev/null
+++ b/user/plugins/admin/classes/Twig/AdminTwigExtension.php
@@ -0,0 +1,118 @@
+grav = Grav::instance();
+ $this->lang = $this->grav['user']->language;
+ }
+
+ public function getFilters()
+ {
+ return [
+ new \Twig_SimpleFilter('tu', [$this, 'tuFilter']),
+ new \Twig_SimpleFilter('toYaml', [$this, 'toYamlFilter']),
+ new \Twig_SimpleFilter('fromYaml', [$this, 'fromYamlFilter']),
+ new \Twig_SimpleFilter('adminNicetime', [$this, 'adminNicetimeFilter']),
+ new \Twig_SimpleFilter('nested', [$this, 'nestedFilter']),
+ ];
+ }
+
+ public function getFunctions()
+ {
+ return [
+ new \Twig_SimpleFunction('getPageUrl', [$this, 'getPageUrl'], ['needs_context' => true]),
+ new \Twig_SimpleFunction('clone', [$this, 'cloneFunc']),
+ ];
+ }
+
+ public function nestedFilter($current, $name)
+ {
+ $path = explode('.', trim($name, '.'));
+
+ foreach ($path as $field) {
+ if (is_object($current) && isset($current->{$field})) {
+ $current = $current->{$field};
+ } elseif (is_array($current) && isset($current[$field])) {
+ $current = $current[$field];
+ } else {
+ return null;
+ }
+ }
+
+ return $current;
+ }
+
+ public function cloneFunc($obj)
+ {
+ return clone $obj;
+ }
+
+ public function getPageUrl($context, PageInterface $page)
+ {
+ $page_route = trim($page->rawRoute(), '/');
+ $page_lang = $page->language();
+ $base_url = $context['base_url'];
+ $base_url_simple = $context['base_url_simple'];
+ $admin_lang = Grav::instance()['session']->admin_lang ?: 'en';
+
+ if ($page_lang && $page_lang !== $admin_lang) {
+ $page_url = $base_url_simple . '/' . $page_lang . '/' . $context['admin_route'] . '/pages/' . $page_route;
+ } else {
+ $page_url = $base_url . '/pages/' . $page_route;
+ }
+
+ return $page_url;
+ }
+
+ public static function tuFilter()
+ {
+ $args = func_get_args();
+ $numargs = count($args);
+ $lang = null;
+
+ if (($numargs === 3 && is_array($args[1])) || ($numargs === 2 && !is_array($args[1]))) {
+ $lang = array_pop($args);
+ } elseif ($numargs === 2 && is_array($args[1])) {
+ $subs = array_pop($args);
+ $args = array_merge($args, $subs);
+ }
+
+ return Grav::instance()['admin']->translate($args, $lang);
+ }
+
+ public function toYamlFilter($value, $inline = null)
+ {
+ return Yaml::dump($value, $inline);
+
+ }
+
+ public function fromYamlFilter($value)
+ {
+ return Yaml::parse($value);
+ }
+
+ public function adminNicetimeFilter($date, $long_strings = true)
+ {
+ return Grav::instance()['admin']->adminNiceTime($date, $long_strings);
+ }
+
+}
diff --git a/user/plugins/admin/classes/admin.php b/user/plugins/admin/classes/admin.php
new file mode 100644
index 0000000..7e746f5
--- /dev/null
+++ b/user/plugins/admin/classes/admin.php
@@ -0,0 +1,1971 @@
+grav = $grav;
+ $this->base = $base;
+ $this->location = $location;
+ $this->route = $route;
+ $this->uri = $grav['uri'];
+ $this->session = $grav['session'];
+ $this->user = $grav['user'];
+ $this->permissions = [];
+ $language = $grav['language'];
+
+ // Load utility class
+ if ($language->enabled()) {
+ $this->multilang = true;
+ $this->languages_enabled = (array)$this->grav['config']->get('system.languages.supported', []);
+
+ //Set the currently active language for the admin
+ $language = $this->grav['uri']->param('lang');
+ if (!$language) {
+ if (!$this->session->admin_lang) {
+ $this->session->admin_lang = $this->grav['language']->getLanguage();
+ }
+ $language = $this->session->admin_lang;
+ }
+ $this->grav['language']->setActive($language ?: 'en');
+ } else {
+ $this->grav['language']->setActive('en');
+ $this->multilang = false;
+ }
+
+ }
+
+ /**
+ * Return the languages available in the admin
+ *
+ * @return array
+ */
+ public static function adminLanguages()
+ {
+ $languages = [];
+
+ $path = Grav::instance()['locator']->findResource('plugins://admin/languages');
+
+ /** @var \DirectoryIterator $directory */
+ foreach (new \DirectoryIterator($path) as $file) {
+ if ($file->isDir() || $file->isDot() || Utils::startsWith($file->getFilename(), '.')) {
+ continue;
+ }
+
+ $lang = $file->getBasename('.yaml');
+
+ $languages[$lang] = LanguageCodes::getNativeName($lang);
+
+ }
+
+ // sort languages
+ asort($languages);
+
+ return $languages;
+ }
+
+ /**
+ * Return the found configuration blueprints
+ *
+ * @return array
+ */
+ public static function configurations()
+ {
+ $configurations = [];
+
+ /** @var UniformResourceIterator $iterator */
+ $iterator = Grav::instance()['locator']->getIterator('blueprints://config');
+
+ foreach ($iterator as $file) {
+ if ($file->isDir() || !preg_match('/^[^.].*.yaml$/', $file->getFilename())) {
+ continue;
+ }
+ $configurations[] = $file->getBasename('.yaml');
+ }
+
+ return $configurations;
+ }
+
+ /**
+ * Return the tools found
+ *
+ * @return array
+ */
+ public static function tools()
+ {
+ $tools = [];
+ Grav::instance()->fireEvent('onAdminTools', new Event(['tools' => &$tools]));
+
+ return $tools;
+ }
+
+ public static function toolsPermissions()
+ {
+ $tools = static::tools();
+ $perms = [];
+
+ foreach ($tools as $tool) {
+ $perms = array_merge($perms, $tool[0]);
+ }
+
+ return array_unique($perms);
+ }
+
+ /**
+ * Return the languages available in the site
+ *
+ * @return array
+ */
+ public static function siteLanguages()
+ {
+ $languages = [];
+ $lang_data = (array) Grav::instance()['config']->get('system.languages.supported', []);
+
+ foreach ($lang_data as $index => $lang) {
+ $languages[$lang] = LanguageCodes::getNativeName($lang);
+ }
+
+ return $languages;
+ }
+
+ /**
+ * Static helper method to return the admin form nonce
+ *
+ * @return string
+ */
+ public static function getNonce()
+ {
+ $action = 'admin-form';
+
+ return Utils::getNonce($action);
+ }
+
+ /**
+ * Static helper method to return the last used page name
+ *
+ * @return string
+ */
+ public static function getLastPageName()
+ {
+ return Grav::instance()['session']->lastPageName ?: 'default';
+ }
+
+ /**
+ * Static helper method to return the last used page route
+ *
+ * @return string
+ */
+ public static function getLastPageRoute()
+ {
+ return Grav::instance()['session']->lastPageRoute ?: self::route();
+ }
+
+ /**
+ * Static helper method to return current route.
+ *
+ * @return string
+ */
+ public static function route()
+ {
+ $pages = Grav::instance()['pages'];
+ $route = '/' . ltrim(Grav::instance()['admin']->route, '/');
+
+ /** @var PageInterface $page */
+ $page = $pages->dispatch($route);
+ $parent_route = null;
+ if ($page) {
+ /** @var PageInterface $parent */
+ $parent = $page->parent();
+ $parent_route = $parent->rawRoute();
+ }
+
+ return $parent_route;
+ }
+
+ public static function getTempDir()
+ {
+ try {
+ $tmp_dir = Grav::instance()['locator']->findResource('tmp://', true, true);
+ } catch (\Exception $e) {
+ $tmp_dir = Grav::instance()['locator']->findResource('cache://', true, true) . '/tmp';
+ }
+
+ return $tmp_dir;
+ }
+
+ public static function getPageMedia()
+ {
+ $files = [];
+ $grav = Grav::instance();
+
+ $pages = $grav['pages'];
+ $route = '/' . ltrim($grav['admin']->route, '/');
+
+ /** @var PageInterface $page */
+ $page = $pages->dispatch($route);
+ $parent_route = null;
+ if ($page) {
+ $media = $page->media()->all();
+ $files = array_keys($media);
+ }
+ return $files;
+
+ }
+
+ /**
+ * Get current session.
+ *
+ * @return Session
+ */
+ public function session()
+ {
+ return $this->session;
+ }
+
+ /**
+ * Fetch and delete messages from the session queue.
+ *
+ * @param string $type
+ *
+ * @return array
+ */
+ public function messages($type = null)
+ {
+ /** @var Message $messages */
+ $messages = $this->grav['messages'];
+
+ return $messages->fetch($type);
+ }
+
+ /**
+ * Authenticate user.
+ *
+ * @param array $credentials User credentials.
+ */
+ public function authenticate($credentials, $post)
+ {
+ /** @var Login $login */
+ $login = $this->grav['login'];
+
+ // Remove login nonce from the form.
+ $credentials = array_diff_key($credentials, ['admin-nonce' => true]);
+ $twofa = $this->grav['config']->get('plugins.admin.twofa_enabled', false);
+
+ $rateLimiter = $login->getRateLimiter('login_attempts');
+
+ $userKey = (string)($credentials['username'] ?? '');
+ $ipKey = Uri::ip();
+ $redirect = $post['redirect'] ?? $this->base . $this->route;
+
+ // Pseudonymization of the IP
+ $ipKey = sha1($ipKey . $this->grav['config']->get('security.salt'));
+
+ // Check if the current IP has been used in failed login attempts.
+ $attempts = count($rateLimiter->getAttempts($ipKey, 'ip'));
+
+ $rateLimiter->registerRateLimitedAction($ipKey, 'ip')->registerRateLimitedAction($userKey);
+
+ // Check rate limit for both IP and user, but allow each IP a single try even if user is already rate limited.
+ if ($rateLimiter->isRateLimited($ipKey, 'ip') || ($attempts && $rateLimiter->isRateLimited($userKey))) {
+ $this->setMessage(static::translate(['PLUGIN_LOGIN.TOO_MANY_LOGIN_ATTEMPTS', $rateLimiter->getInterval()]), 'error');
+
+ $this->grav->redirect('/');
+ }
+
+ // Fire Login process.
+ $event = $login->login(
+ $credentials,
+ ['admin' => true, 'twofa' => $twofa],
+ ['authorize' => 'admin.login', 'return_event' => true]
+ );
+ $user = $event->getUser();
+
+ if ($user->authenticated) {
+ $rateLimiter->resetRateLimit($ipKey, 'ip')->resetRateLimit($userKey);
+ if ($user->authorized) {
+ $event->defMessage('PLUGIN_ADMIN.LOGIN_LOGGED_IN', 'info');
+
+ $event->defRedirect($post['redirect'] ?? $redirect);
+ } else {
+ $this->session->redirect = $redirect;
+ }
+ } else {
+ if ($user->authorized) {
+ $event->defMessage('PLUGIN_LOGIN.ACCESS_DENIED', 'error');
+ } else {
+ $event->defMessage('PLUGIN_LOGIN.LOGIN_FAILED', 'error');
+ }
+ }
+
+ $event->defRedirect($redirect);
+
+ $message = $event->getMessage();
+ if ($message) {
+ $this->setMessage(static::translate($message), $event->getMessageType());
+ }
+
+ $redirect = $event->getRedirect();
+
+ $this->grav->redirect($redirect, $event->getRedirectCode());
+ }
+
+ /**
+ * Check Two-Factor Authentication.
+ */
+ public function twoFa($data, $post)
+ {
+ /** @var Login $login */
+ $login = $this->grav['login'];
+
+ /** @var TwoFactorAuth $twoFa */
+ $twoFa = $login->twoFactorAuth();
+ $user = $this->grav['user'];
+
+ $code = $data['2fa_code'] ?? null;
+
+ $secret = $user->twofa_secret ?? null;
+
+ if (!$code || !$secret || !$twoFa->verifyCode($secret, $code)) {
+ $login->logout(['admin' => true]);
+
+ $this->grav['session']->setFlashCookieObject(Admin::TMP_COOKIE_NAME, ['message' => $this->translate('PLUGIN_ADMIN.2FA_FAILED'), 'status' => 'error']);
+
+ $this->grav->redirect($this->uri->route(), 303);
+ }
+
+ $this->setMessage($this->translate('PLUGIN_ADMIN.LOGIN_LOGGED_IN'), 'info');
+
+ $user->authorized = true;
+
+ $this->grav->redirect($post['redirect']);
+ }
+
+ /**
+ * Logout from admin.
+ */
+ public function logout($data, $post)
+ {
+ /** @var Login $login */
+ $login = $this->grav['login'];
+
+ $event = $login->logout(['admin' => true], ['return_event' => true]);
+
+ $event->defMessage('PLUGIN_ADMIN.LOGGED_OUT', 'info');
+ $message = $event->getMessage();
+ if ($message) {
+ $this->grav['session']->setFlashCookieObject(Admin::TMP_COOKIE_NAME, ['message' => $this->translate($message), 'status' => $event->getMessageType()]);
+ }
+
+ $this->grav->redirect($this->base);
+ }
+
+ /**
+ * @return bool
+ */
+ public static function doAnyUsersExist()
+ {
+ $accounts = Grav::instance()['accounts'] ?? null;
+ if ($accounts instanceof \Countable) {
+ return $accounts->count() > 0;
+ }
+
+ // TODO: remove old way to check for existence of a user account (Grav < v1.6.9)
+ $account_dir = $file_path = Grav::instance()['locator']->findResource('account://');
+ $user_check = glob($account_dir . '/*.yaml');
+
+ return $user_check;
+ }
+
+ /**
+ * Add message into the session queue.
+ *
+ * @param string $msg
+ * @param string $type
+ */
+ public function setMessage($msg, $type = 'info')
+ {
+ /** @var Message $messages */
+ $messages = $this->grav['messages'];
+ $messages->add($msg, $type);
+ }
+
+ public function addTempMessage($msg, $type)
+ {
+ $this->temp_messages[] = ['message' => $msg, 'scope' => $type];
+ }
+
+ public function getTempMessages()
+ {
+ return $this->temp_messages;
+ }
+
+ /**
+ * Translate a string to the user-defined language
+ *
+ * @param array|mixed $args
+ *
+ * @param mixed $languages
+ *
+ * @return string
+ */
+ public static function translate($args, $languages = null)
+ {
+ $grav = Grav::instance();
+
+ if (is_array($args)) {
+ $lookup = array_shift($args);
+ } else {
+ $lookup = $args;
+ $args = [];
+ }
+
+ if (!$languages) {
+ if ($grav['config']->get('system.languages.translations_fallback', true)) {
+ $languages = $grav['language']->getFallbackLanguages();
+ } else {
+ $languages = (array)$grav['language']->getDefault();
+ }
+ $languages = $grav['user']->authenticated ? [ $grav['user']->language ] : $languages;
+ } else {
+ $languages = (array)$languages;
+ }
+
+ foreach ((array)$languages as $lang) {
+ $translation = $grav['language']->getTranslation($lang, $lookup, true);
+
+ if (!$translation) {
+ $language = $grav['language']->getDefault() ?: 'en';
+ $translation = $grav['language']->getTranslation($language, $lookup, true);
+ }
+
+ if (!$translation) {
+ $language = 'en';
+ $translation = $grav['language']->getTranslation($language, $lookup, true);
+ }
+
+ if ($translation) {
+ if (count($args) >= 1) {
+ return vsprintf($translation, $args);
+ }
+
+ return $translation;
+ }
+ }
+
+ return $lookup;
+ }
+
+ /**
+ * Checks user authorisation to the action.
+ *
+ * @param string|string[] $action
+ *
+ * @return bool
+ */
+ public function authorize($action = 'admin.login')
+ {
+ $action = (array)$action;
+
+ foreach ($action as $a) {
+ if ($this->user->authorize($a)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Gets configuration data.
+ *
+ * @param string $type
+ * @param array $post
+ *
+ * @return mixed
+ * @throws \RuntimeException
+ */
+ public function data($type, array $post = [])
+ {
+ static $data = [];
+
+ if (isset($data[$type])) {
+ return $data[$type];
+ }
+
+ if (!$post) {
+ $post = $this->grav['uri']->post();
+ $post = $post['data'] ?? [];
+ }
+
+ // Check to see if a data type is plugin-provided, before looking into core ones
+ $event = $this->grav->fireEvent('onAdminData', new Event(['type' => &$type]));
+ if ($event) {
+ if (isset($event['data_type'])) {
+ return $event['data_type'];
+ }
+
+ if (is_string($event['type'])) {
+ $type = $event['type'];
+ }
+ }
+
+ /** @var UniformResourceLocator $locator */
+ $locator = $this->grav['locator'];
+ $filename = $locator->findResource("config://{$type}.yaml", true, true);
+ $file = CompiledYamlFile::instance($filename);
+
+ if (preg_match('|plugins/|', $type)) {
+ /** @var Plugins $plugins */
+ $plugins = $this->grav['plugins'];
+ $obj = $plugins->get(preg_replace('|plugins/|', '', $type));
+
+ if (!$obj) {
+ return [];
+ }
+
+ $obj->merge($post);
+ $obj->file($file);
+
+ $data[$type] = $obj;
+ } elseif (preg_match('|themes/|', $type)) {
+ /** @var Themes $themes */
+ $themes = $this->grav['themes'];
+ $obj = $themes->get(preg_replace('|themes/|', '', $type));
+
+ if (!$obj) {
+ return [];
+ }
+
+ $obj->merge($post);
+ $obj->file($file);
+
+ $data[$type] = $obj;
+ } elseif (preg_match('|users?/|', $type)) {
+ /** @var UserCollectionInterface $users */
+ $users = $this->grav['accounts'];
+
+ $obj = $users->load(preg_replace('|users?/|', '', $type));
+ $obj->update($this->cleanUserPost($post));
+
+ $data[$type] = $obj;
+ } elseif (preg_match('|config/|', $type)) {
+ $type = preg_replace('|config/|', '', $type);
+ $blueprints = $this->blueprints("config/{$type}");
+ $config = $this->grav['config'];
+ $obj = new Data\Data($config->get($type, []), $blueprints);
+ $obj->merge($post);
+
+ // FIXME: We shouldn't allow user to change configuration files in system folder!
+ $filename = $this->grav['locator']->findResource("config://{$type}.yaml")
+ ?: $this->grav['locator']->findResource("config://{$type}.yaml", true, true);
+ $file = CompiledYamlFile::instance($filename);
+ $obj->file($file);
+ $data[$type] = $obj;
+ } elseif (preg_match('|media-manager/|', $type)) {
+ $filename = base64_decode(preg_replace('|media-manager/|', '', $type));
+
+ $file = File::instance($filename);
+
+ $obj = new \stdClass();
+ $obj->title = $file->basename();
+ $obj->path = $file->filename();
+ $obj->file = $file;
+ $obj->page = $this->grav['pages']->get(dirname($obj->path));
+
+ $fileInfo = pathinfo($obj->title);
+ $filename = str_replace(['@3x', '@2x'], '', $fileInfo['filename']);
+ if (isset($fileInfo['extension'])) {
+ $filename .= '.' . $fileInfo['extension'];
+ }
+
+ if ($obj->page && isset($obj->page->media()[$filename])) {
+ $obj->metadata = new Data\Data($obj->page->media()[$filename]->metadata());
+ }
+
+ $data[$type] = $obj;
+ } else {
+ throw new \RuntimeException("Data type '{$type}' doesn't exist!");
+ }
+
+ return $data[$type];
+ }
+
+ /**
+ * Clean user form post and remove extra stuff that may be passed along
+ *
+ * @param array $post
+ * @return array
+ */
+ public function cleanUserPost($post)
+ {
+ // Clean fields for all users
+ unset($post['hashed_password']);
+
+ // Clean field for users who shouldn't be able to modify these fields
+ if (!$this->authorize(['admin.user', 'admin.super'])) {
+ unset($post['access'], $post['state']);
+ }
+
+ return $post;
+ }
+
+ protected function hasErrorMessage()
+ {
+ $msgs = $this->grav['messages']->all();
+ foreach ($msgs as $msg) {
+ if (isset($msg['scope']) && $msg['scope'] === 'error') {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Returns blueprints for the given type.
+ *
+ * @param string $type
+ *
+ * @return Data\Blueprint
+ */
+ public function blueprints($type)
+ {
+ if ($this->blueprints === null) {
+ $this->blueprints = new Data\Blueprints('blueprints://');
+ }
+
+ return $this->blueprints->get($type);
+ }
+
+ /**
+ * Converts dot notation to array notation.
+ *
+ * @param string $name
+ *
+ * @return string
+ */
+ public function field($name)
+ {
+ $path = explode('.', $name);
+
+ return array_shift($path) . ($path ? '[' . implode('][', $path) . ']' : '');
+ }
+
+ /**
+ * Get all routes.
+ *
+ * @param bool $unique
+ *
+ * @return array
+ */
+ public function routes($unique = false)
+ {
+ /** @var Pages $pages */
+ $pages = $this->grav['pages'];
+
+ if ($unique) {
+ $routes = array_unique($pages->routes());
+ } else {
+ $routes = $pages->routes();
+ }
+
+ return $routes;
+ }
+
+ /**
+ * Count the pages
+ *
+ * @return int
+ */
+ public function pagesCount()
+ {
+ if (!$this->pages_count) {
+ $this->pages_count = count($this->grav['pages']->all());
+ }
+
+ return $this->pages_count;
+ }
+
+ /**
+ * Get all template types
+ *
+ * @return array
+ */
+ public function types()
+ {
+ return Pages::types();
+ }
+
+ /**
+ * Get all modular template types
+ *
+ * @return array
+ */
+ public function modularTypes()
+ {
+ return Pages::modularTypes();
+ }
+
+ /**
+ * Get all access levels
+ *
+ * @return array
+ */
+ public function accessLevels()
+ {
+ if (method_exists($this->grav['pages'], 'accessLevels')) {
+ return $this->grav['pages']->accessLevels();
+ }
+
+ return [];
+ }
+
+ public function license($package_slug)
+ {
+ return Licenses::get($package_slug);
+ }
+
+ /**
+ * Generate an array of dependencies for a package, used to generate a list of
+ * packages that can be removed when removing a package.
+ *
+ * @param string $slug The package slug
+ *
+ * @return array|bool
+ */
+ public function dependenciesThatCanBeRemovedWhenRemoving($slug)
+ {
+ $gpm = $this->gpm();
+ if (!$gpm) {
+ return false;
+ }
+
+ $dependencies = [];
+
+ $package = $this->getPackageFromGPM($slug);
+
+ if ($package) {
+ if ($package->dependencies) {
+ foreach ($package->dependencies as $dependency) {
+// if (count($gpm->getPackagesThatDependOnPackage($dependency)) > 1) {
+// continue;
+// }
+ if (isset($dependency['name'])) {
+ $dependency = $dependency['name'];
+ }
+
+ if (!in_array($dependency, $dependencies, true)) {
+ if (!in_array($dependency, ['admin', 'form', 'login', 'email', 'php'])) {
+ $dependencies[] = $dependency;
+ }
+ }
+ }
+ }
+ }
+
+ return $dependencies;
+ }
+
+ /**
+ * Get the GPM instance
+ *
+ * @return GPM The GPM instance
+ */
+ public function gpm()
+ {
+ if (!$this->gpm) {
+ try {
+ $this->gpm = new GPM();
+ } catch (\Exception $e) {
+ $this->setMessage($e->getMessage(), 'error');
+ }
+ }
+
+ return $this->gpm;
+ }
+
+ public function getPackageFromGPM($package_slug)
+ {
+ $package = $this->plugins(true)[$package_slug];
+ if (!$package) {
+ $package = $this->themes(true)[$package_slug];
+ }
+
+ return $package;
+ }
+
+ /**
+ * Get all plugins.
+ *
+ * @param bool $local
+ *
+ * @return mixed
+ */
+ public function plugins($local = true)
+ {
+ $gpm = $this->gpm();
+
+ if (!$gpm) {
+ return false;
+ }
+
+ if ($local) {
+ return $gpm->getInstalledPlugins();
+ }
+
+ $plugins = $gpm->getRepositoryPlugins();
+ if ($plugins) {
+ return $plugins->filter(function ($package, $slug) use ($gpm) {
+ return !$gpm->isPluginInstalled($slug);
+ });
+ }
+
+ return [];
+ }
+
+ /**
+ * Get all themes.
+ *
+ * @param bool $local
+ *
+ * @return mixed
+ */
+ public function themes($local = true)
+ {
+ $gpm = $this->gpm();
+
+ if (!$gpm) {
+ return false;
+ }
+
+ if ($local) {
+ return $gpm->getInstalledThemes();
+ }
+
+ $themes = $gpm->getRepositoryThemes();
+ if ($themes) {
+ return $themes->filter(function ($package, $slug) use ($gpm) {
+ return !$gpm->isThemeInstalled($slug);
+ });
+ }
+
+ return [];
+ }
+
+ /**
+ * Get list of packages that depend on the passed package slug
+ *
+ * @param string $slug The package slug
+ *
+ * @return array|bool
+ */
+ public function getPackagesThatDependOnPackage($slug)
+ {
+ $gpm = $this->gpm();
+ if (!$gpm) {
+ return false;
+ }
+
+ return $gpm->getPackagesThatDependOnPackage($slug);
+ }
+
+ /**
+ * Check the passed packages list can be updated
+ *
+ * @param array $packages
+ *
+ * @throws \Exception
+ * @return bool
+ */
+ public function checkPackagesCanBeInstalled($packages)
+ {
+ $gpm = $this->gpm();
+ if (!$gpm) {
+ return false;
+ }
+
+ $this->gpm->checkPackagesCanBeInstalled($packages);
+
+ return true;
+ }
+
+ /**
+ * Get an array of dependencies needed to be installed or updated for a list of packages
+ * to be installed.
+ *
+ * @param array $packages The packages slugs
+ *
+ * @return array|bool
+ */
+ public function getDependenciesNeededToInstall($packages)
+ {
+ $gpm = $this->gpm();
+ if (!$gpm) {
+ return false;
+ }
+
+ return $this->gpm->getDependencies($packages);
+ }
+
+ /**
+ * Used by the Dashboard in the admin to display the X latest pages
+ * that have been modified
+ *
+ * @param integer $count number of pages to pull back
+ *
+ * @return array|null
+ */
+ public function latestPages($count = 10)
+ {
+ /** @var Pages $pages */
+ $pages = $this->grav['pages'];
+
+ $latest = [];
+
+ if (null === $pages->routes()) {
+ return null;
+ }
+
+ foreach ($pages->routes() as $url => $path) {
+ $page = $pages->dispatch($url, true);
+ if ($page && $page->routable()) {
+ $latest[$page->route()] = ['modified' => $page->modified(), 'page' => $page];
+ }
+ }
+
+ // sort based on modified
+ uasort($latest, function ($a, $b) {
+ if ($a['modified'] == $b['modified']) {
+ return 0;
+ }
+
+ return ($a['modified'] > $b['modified']) ? -1 : 1;
+ });
+
+ // build new array with just pages in it
+ $list = [];
+ foreach ($latest as $item) {
+ $list[] = $item['page'];
+ }
+
+ return array_slice($list, 0, $count);
+ }
+
+ /**
+ * Get log file for fatal errors.
+ *
+ * @return string
+ */
+ public function logEntry()
+ {
+ $file = File::instance($this->grav['locator']->findResource("log://{$this->route}.html"));
+ $content = $file->content();
+ $file->free();
+
+ return $content;
+ }
+
+ /**
+ * Search in the logs when was the latest backup made
+ *
+ * @return array Array containing the latest backup information
+ */
+ public function lastBackup()
+ {
+ $file = JsonFile::instance($this->grav['locator']->findResource('log://backup.log'));
+ $content = $file->content();
+ if (empty($content)) {
+ return [
+ 'days' => '∞',
+ 'chart_fill' => 100,
+ 'chart_empty' => 0
+ ];
+ }
+
+ $backup = new \DateTime();
+ $backup->setTimestamp($content['time']);
+ $diff = $backup->diff(new \DateTime());
+
+ $days = $diff->days;
+ $chart_fill = $days > 30 ? 100 : round($days / 30 * 100);
+
+ return [
+ 'days' => $days,
+ 'chart_fill' => $chart_fill,
+ 'chart_empty' => 100 - $chart_fill
+ ];
+ }
+
+ /**
+ * Determine if the plugin or theme info passed is from Team Grav
+ *
+ * @param object $info Plugin or Theme info object
+ *
+ * @return bool
+ */
+ public function isTeamGrav($info)
+ {
+ return isset($info['author']['name']) && ($info['author']['name'] === 'Team Grav' || Utils::contains($info['author']['name'], 'Trilby Media'));
+ }
+
+ /**
+ * Determine if the plugin or theme info passed is premium
+ *
+ * @param object $info Plugin or Theme info object
+ *
+ * @return bool
+ */
+ public function isPremiumProduct($info)
+ {
+ return isset($info['premium']);
+ }
+
+ /**
+ * Renders phpinfo
+ *
+ * @return string The phpinfo() output
+ */
+ function phpinfo()
+ {
+ if (function_exists('phpinfo')) {
+ ob_start();
+ phpinfo();
+ $pinfo = ob_get_contents();
+ ob_end_clean();
+
+ $pinfo = preg_replace('%^.*
Като алтернатива, можете да копирате линка в адресната лента на браузъра си:
%2$s
С уважение,
%3$s
"
+ MANAGE_PAGES: "Управление на страниците"
+ CONFIGURATION: "Настройки"
+ PAGES: "Страници"
+ PLUGINS: "Разширения"
+ PLUGIN: "Разширение"
+ THEMES: "Теми"
+ LOGOUT: "Изход"
+ BACK: "Назад"
+ NEXT: "Напред"
+ PREVIOUS: "Назад"
+ ADD_PAGE: "Добавяне на страница"
+ ADD_MODULAR: "Добавяне на модулна страница"
+ MOVE: "Преместване"
+ DELETE: "Изтриване"
+ UNSET: "Незададен"
+ VIEW: "Виж"
+ SAVE: "Запазване"
+ NORMAL: "Обикновен"
+ EXPERT: "Експертен"
+ EXPAND_ALL: "Разгъване на всички"
+ COLLAPSE_ALL: "Свиване на всички"
+ ERROR: "Грешка"
+ CLOSE: "Затваряне"
+ CANCEL: "Отказ"
+ CONTINUE: "Продължаване"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Изисква се потвърждение"
+ MODAL_CHANGED_DETECTED_TITLE: "Засечени са промени"
+ MODAL_CHANGED_DETECTED_DESC: "Имате незапазени промени. Наистина ли искате да излезете без да сте ги запазили?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Изисква се потвърждение"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Наистина ли искате да изтриете този файл? Това действие не може да бъде отменено."
+ ADD_FILTERS: "Добавяне на филтри"
+ SEARCH_PAGES: "Търсене"
+ VERSION: "Версия"
+ WAS_MADE_WITH: "е създаден с"
+ BY: "от"
+ UPDATE_THEME: "Актуализация на тема"
+ UPDATE_PLUGIN: "Актуализация на разширение"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "на тази тема е наличен"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "на този плъгин е вече наличен"
+ AUTHOR: "Автор"
+ HOMEPAGE: "Страница"
+ DEMO: "Демо"
+ BUG_TRACKER: "Докладване за грешки"
+ KEYWORDS: "Ключови думи"
+ LICENSE: "Лиценз"
+ DESCRIPTION: "Описание"
+ README: "Документация"
+ REMOVE_THEME: "Премахване на тема"
+ INSTALL_THEME: "Инсталиране на тема"
+ THEME: "Тема"
+ BACK_TO_THEMES: "Обратно към темите"
+ BACK_TO_PLUGINS: "Обратно към разширенията"
+ CHECK_FOR_UPDATES: "Проверка за актуализации"
+ ADD: "Добавяне"
+ CLEAR_CACHE: "Изтриване на временните файлове"
+ CLEAR_CACHE_ALL_CACHE: "Всички"
+ CLEAR_CACHE_ASSETS_ONLY: "Само Assets"
+ CLEAR_CACHE_IMAGES_ONLY: "Само изображенията"
+ CLEAR_CACHE_CACHE_ONLY: "Само временните файлове"
+ CLEAR_CACHE_TMP_ONLY: "само временен"
+ DASHBOARD: "Контролен панел"
+ UPDATES_AVAILABLE: "Налични актуализации"
+ DAYS: "Дни"
+ UPDATE: "Актуализация"
+ BACKUP: "Резервно копие"
+ BACKUPS: "Резервно копие"
+ BACKUP_NOW: "Създай резервно копие"
+ BACKUPS_STATS: "Статистика резервни копия"
+ BACKUPS_HISTORY: "История резервни копия"
+ BACKUPS_PURGE_CONFIG: "Настройка изтриване на резервно копие"
+ BACKUPS_PROFILES: "Профили на резервни копия"
+ BACKUPS_COUNT: "Брой резервни копия"
+ BACKUPS_PROFILES_COUNT: "Брой профили"
+ BACKUPS_TOTAL_SIZE: "Използвано пространство"
+ BACKUPS_NEWEST: "Най-ново резервно копие"
+ BACKUPS_OLDEST: "Най-старо резервно копие"
+ BACKUPS_PURGE: "Изтриване"
+ BACKUPS_NOT_GENERATED: "Все още не са генериране резервни копия..."
+ BACKUPS_PURGE_NUMBER: "Използва %s от %s слота за резервни копия"
+ BACKUPS_PURGE_TIME: "Остават %s дни за резервно копие"
+ BACKUPS_PURGE_SPACE: "Използва %s от %s"
+ BACKUP_DELETED: "Успешно изтрито резервно копие"
+ BACKUP_NOT_FOUND: "Не е намерено резервно копие"
+ BACKUP_DATE: "Данни за резервно копие"
+ STATISTICS: "Статистика"
+ TODAY: "Днес"
+ WEEK: "Седмица"
+ MONTH: "Месец"
+ LATEST_PAGE_UPDATES: "Скоро актуализирани страници"
+ MAINTENANCE: "Техническа поддръжка"
+ UPDATED: "Актуализиран"
+ MON: "пон"
+ TUE: "вт"
+ WED: "ср"
+ THU: "чт"
+ FRI: "пт"
+ SAT: "сб"
+ SUN: "нд"
+ COPY: "Копиране"
+ EDIT: "Редактиране"
+ CREATE: "Създаване"
+ GRAV_ADMIN: "Grav Admin"
+ GRAV_OFFICIAL_PLUGIN: "Официално разширение на Grav"
+ GRAV_OFFICIAL_THEME: "Официална тема на Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Този плъгин е символично свързан. Актуализации няма да бъдат отразени."
+ THEME_SYMBOLICALLY_LINKED: "Тази тема е символично свързана. Актуализации няма да бъдат отразени."
+ REMOVE_PLUGIN: "Премахване на разширение"
+ INSTALL_PLUGIN: "Инсталиране на разширение"
+ AVAILABLE: "Налични"
+ INSTALLED: "Инсталирани"
+ INSTALL: "Инсталиране"
+ ACTIVE_THEME: "Активна тема"
+ SWITCHING_TO: "Превключване към"
+ SWITCHING_TO_DESCRIPTION: "При превключването към различна тема няма гаранция, че всички страници са поддържани, което може да доведе до потенциални грешки при опит за зареждане на тези страници."
+ SWITCHING_TO_CONFIRMATION: "Искате ли да продължите и да превключите към темата"
+ CREATE_NEW_USER: "Създаване на нов потребител"
+ REMOVE_USER: "Премахване на потребител"
+ ACCESS_DENIED: "Нямате достъп"
+ ACCOUNT_NOT_ADMIN: "вашият профил няма администраторски права"
+ PHP_INFO: "Информация за PHP"
+ INSTALLER: "Инсталатор"
+ AVAILABLE_THEMES: "Налични теми"
+ AVAILABLE_PLUGINS: "Налични разширения"
+ INSTALLED_THEMES: "Инсталирани теми"
+ INSTALLED_PLUGINS: "Инсталирани разширения"
+ BROWSE_ERROR_LOGS: "Преглед на дневниците за грешки"
+ SITE: "Сайт"
+ INFO: "Информация"
+ SYSTEM: "Система"
+ USER: "Потребител"
+ ADD_ACCOUNT: "Добавяне на профил"
+ SWITCH_LANGUAGE: "Превключване на езика"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Разширението е активирано успешно"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Разширението е спряно"
+ SUCCESSFULLY_CHANGED_THEME: "Промяната на подразбиращата се тема е успешно"
+ INSTALLATION_FAILED: "Неуспешна инсталация"
+ INSTALLATION_SUCCESSFUL: "Инсталацията е успешна"
+ UNINSTALL_FAILED: "Неуспешно деинсталиране"
+ UNINSTALL_SUCCESSFUL: "Деинсталирането е успешно"
+ SUCCESSFULLY_SAVED: "Успешно запазено"
+ SUCCESSFULLY_COPIED: "Успешно копирано"
+ REORDERING_WAS_SUCCESSFUL: "Записът бе успешен"
+ SUCCESSFULLY_DELETED: "Успешно изтрити"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Езикът е променен успешно"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Нямате достатъчно права за тази задача"
+ CACHE_CLEARED: "Временните файлове са изчистени"
+ METHOD: "Метод"
+ ERROR_CLEARING_CACHE: "Грешка при изтриването на временните файлове"
+ AN_ERROR_OCCURRED: "Възникна грешка"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Резервното копие е готово за изтегляне"
+ DOWNLOAD_BACKUP: "Изтегляне на резервното копие"
+ PAGES_FILTERED: "Филтрирани страници"
+ NO_PAGE_FOUND: "Няма намерени страници"
+ INVALID_PARAMETERS: "Невалидни параметри"
+ NO_FILES_SENT: "Няма изпратени файлове"
+ EXCEEDED_FILESIZE_LIMIT: "Надхвърлен лимит за размер на PHP конфигурационен файл"
+ UNKNOWN_ERRORS: "Неизвестни грешки"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Превишен лимит за размера на конфигурационен GRAV файл"
+ UNSUPPORTED_FILE_TYPE: "Този файлов формат не се поддържа"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Преместването на качения файл не е успешно."
+ FILE_UPLOADED_SUCCESSFULLY: "Файлът е качен успешно"
+ FILE_DELETED: "Файлът е изтрит"
+ FILE_COULD_NOT_BE_DELETED: "Файлът не може да бъде изтрит"
+ FILE_NOT_FOUND: "Файлът не е намерен"
+ NO_FILE_FOUND: "Няма намерени файлове"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav беше успешно актуализиран до"
+ GRAV_UPDATE_FAILED: "Актуализацията на Grav е неуспешна"
+ EVERYTHING_UPDATED: "Всичко е актуализирано"
+ UPDATES_FAILED: "Актуализациите не бяха успшено"
+ AVATAR_BY: "Аватар от"
+ AVATAR_UPLOAD_OWN: "Или качи собствени..."
+ LAST_BACKUP: "Последно резервно копие"
+ FULL_NAME: "Пълно име"
+ USERNAME: "Потребителско име"
+ EMAIL: "Ел. поща"
+ USERNAME_EMAIL: "Потребителско име или инейл"
+ PASSWORD: "Парола"
+ PASSWORD_CONFIRM: "Потвърждение на паролата"
+ TITLE: "Титла"
+ LANGUAGE: "Език"
+ ACCOUNT: "Профил"
+ EMAIL_VALIDATION_MESSAGE: "Ел. поща трябва да бъде валидна"
+ PASSWORD_VALIDATION_MESSAGE: "Паролата трябва да съдържа поне един номер, една главна буква, една малка буква и да съдържа поне 8 или повече знака"
+ LANGUAGE_HELP: "Задаване на любим език"
+ MEDIA: "Медиа"
+ DEFAULTS: "По подразбиране"
+ SITE_TITLE: "Заглавие на сайта"
+ SITE_TITLE_PLACEHOLDER: "Заглавие за всички страници"
+ SITE_TITLE_HELP: "Подразбиращо се заглавие за вашият сайт, често се използва от темите"
+ SITE_DEFAULT_LANG: "Език по подразбиране"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Език по подразбиране, използван от тага на темите"
+ SITE_DEFAULT_LANG_HELP: "Език по подразбиране, използван от тага на темите"
+ DEFAULT_AUTHOR: "Подразбиращ се автор"
+ DEFAULT_AUTHOR_HELP: "Име на автор по подразбиране, често използвано в теми или страници"
+ DEFAULT_EMAIL: "Имейл по подразбиране"
+ DEFAULT_EMAIL_HELP: "Имейл по подразбиране, използван в теми или страници"
+ TAXONOMY_TYPES: "Видове таксономии"
+ TAXONOMY_TYPES_HELP: "Типовете таксономия трябва да бъдат дефинирани тук, ако искате да ги използвате в страници"
+ PAGE_SUMMARY: "Резюме на страницата"
+ ENABLED: "Включен"
+ ENABLED_HELP: "Разреши извлечение (извлечението връща същото съдържание, като в страницата)"
+ 'YES': "Да"
+ 'NO': "Не"
+ SUMMARY_SIZE: "Размер на резюмето"
+ SUMMARY_SIZE_HELP: "Брой знаци, които да бъдат използвани при създаването на резюме за страницата"
+ FORMAT: "Формат"
+ SHORT: "Къс"
+ LONG: "Дълъг"
+ DELIMITER: "Делител"
+ DELIMITER_HELP: "Разделител на извлечението (по подразбиране '===')"
+ METADATA: "Мета-данни"
+ METADATA_HELP: "Ще бъдат показани метадата стойностите по подразбиране на всяка страница, освен ако не са отхвърлени от страницата"
+ NAME: "Име"
+ CONTENT: "Съдържание"
+ SIZE: "Размер"
+ ACTION: "Действие"
+ REDIRECTS_AND_ROUTES: "Пренасочвания и пътища"
+ CUSTOM_REDIRECTS: "Потребителски пренасочвания"
+ CUSTOM_REDIRECTS_HELP: "маршрути за пренасочване към сдруга страница. Подмяна със стандартен Regex е валидна"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/your/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/your/redirect"
+ CUSTOM_ROUTES: "Потребителски пренасочвания"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/your/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/your/route"
+ FILE_STREAMS: "Потоци файлове"
+ DEFAULT: "По подразбиране"
+ PAGE_MEDIA: "Страница с медия"
+ OPTIONS: "Опции"
+ PUBLISHED: "Публикувано"
+ PUBLISHED_HELP: "По подразбиране страницата се публикува, освен ако не е зададео published: false или publish_date е в бъдеще или unpublish_date е в миналото"
+ DATE: "Дата"
+ DATE_HELP: "Променливата за дата позволява да се зададе дата асоциирана със страницата."
+ PUBLISHED_DATE: "Дата на публикуване"
+ PUBLISHED_DATE_HELP: "Дата, на която автоматично ще се публикува."
+ UNPUBLISHED_DATE: "Дата на непубликуване"
+ UNPUBLISHED_DATE_HELP: "Може да зададе дата за автоматично непубликуване."
+ ROBOTS: "Роботи"
+ TAXONOMIES: "Таксономии"
+ TAXONOMY: "Таксономия"
+ ADVANCED: "Разширено"
+ SETTINGS: "Настройки"
+ FOLDER_NUMERIC_PREFIX: "Цифров префикс на папка"
+ FOLDER_NUMERIC_PREFIX_HELP: "Цифров префикс осигуряващ ръчно подреждане и по-добра видимост"
+ FOLDER_NAME: "Име на папка"
+ FOLDER_NAME_HELP: "Името на папката, която ще се съхрани във файлова система за тази страница"
+ PARENT: "Родител"
+ DEFAULT_OPTION_ROOT: "- Коренова папка -"
+ DEFAULT_OPTION_SELECT: "- Избор -"
+ DISPLAY_TEMPLATE: "Показване на шаблон"
+ BODY_CLASSES: "Класове на тялото"
+ ORDERING: "Подреждане"
+ PAGE_ORDER: "Подредба на страниците"
+ OVERRIDES: "Замени"
+ MENU: "Меню"
+ MENU_HELP: "Стрингът, който ще се използва в меню. Ако не се зададе, ще се използва Title."
+ SLUG: "Слъг"
+ SLUG_HELP: "Слъг променливата Ви позволява да зададете конкретна порция от URL на страницата"
+ SLUG_VALIDATE_MESSAGE: "Слъговете могат да съдържат само малки букви, цифри и тирета"
+ PROCESS: "Обработване"
+ PROCESS_HELP: "Контролирайте обработката на страниците. Може да бъде за отделна страница или глобално"
+ DEFAULT_CHILD_TYPE: "Тип по подразбиране"
+ USE_GLOBAL: "Използвай глобални"
+ ROUTABLE: "Маршрутизируем"
+ ROUTABLE_HELP: "Ако страницата е достъпна през URL"
+ CACHING: "Създаване на временни файлове"
+ VISIBLE: "Видим"
+ VISIBLE_HELP: "Определя дали една страница е видима в навигацията."
+ DISABLED: "Изключено"
+ ITEMS: "Елементи"
+ ORDER_BY: "Подреждане по"
+ ORDER: "Подреждане"
+ FOLDER: "Папка"
+ ASCENDING: "Възходящо"
+ DESCENDING: "Низходящо"
+ ADD_MODULAR_CONTENT: "Добави модулно съдържание"
+ PAGE_TITLE: "Заглавие на страницата"
+ PAGE_TITLE_HELP: "Заглавието на страницата"
+ PAGE: "Страница"
+ MODULAR_TEMPLATE: "Модулен шаблон"
+ FRONTMATTER: "Встъпление"
+ FILENAME: "Име на файла"
+ PARENT_PAGE: "Родителска страница"
+ HOME_PAGE: "Начална страница"
+ HOME_PAGE_HELP: "Страницата, която Grav ще използва по подразбиране за начална страница"
+ DEFAULT_THEME: "Тема по подразбиране"
+ DEFAULT_THEME_HELP: "Задаване на темата по подразбиране, която Grav ще използва (по подразбиране това е Antimatter)"
+ TIMEZONE: "Часова зона"
+ TIMEZONE_HELP: "Презаписване на времевата зона на сървъра"
+ SHORT_DATE_FORMAT: "Кратък формат дата"
+ SHORT_DATE_FORMAT_HELP: "Задай кратък формат дата, който може да се използва от темите"
+ LONG_DATE_FORMAT: "Пълен формат дата"
+ LONG_DATE_FORMAT_HELP: "Задай пълен формат дата, който може да се използва от темите"
+ DEFAULT_ORDERING: "По подразбиране"
+ DEFAULT_ORDERING_DEFAULT: "По подразбиране - според име на папка"
+ DEFAULT_ORDERING_FOLDER: "Папка - според името на папката без префикс"
+ DEFAULT_ORDERING_TITLE: "Заглавие - според заглавно поле в главата"
+ DEFAULT_ORDERING_DATE: "Дата - според поле за дата в главата"
+ DEFAULT_ORDER_DIRECTION: "Подреждане по подразбиране"
+ DEFAULT_ORDER_DIRECTION_HELP: "Посоката на страниците в списък"
+ DEFAULT_PAGE_COUNT: "Брой страници по подразбиране"
+ DEFAULT_PAGE_COUNT_HELP: "Максимален брой страници в списък по подразбиране"
+ DATE_BASED_PUBLISHING: "Публикуване според датата"
+ DATE_BASED_PUBLISHING_HELP: "Автоматично (не)публикувай постове според датата"
+ EVENTS: "Събития"
+ EVENTS_HELP: "Пускане или спиране на специфични събития. Спирането на някои събития може да счупи определени приставки"
+ REDIRECT_DEFAULT_ROUTE: "Пренасочване на пътя по подразбиране"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Автоматично пренасочване към пътя по подразбиране на страницата"
+ LANGUAGES: "Езици"
+ SUPPORTED: "Поддържани"
+ SUPPORTED_HELP: "Списък от двубуквени езикови кодове, отделени със запетая (пример 'bg,en,de')"
+ TRANSLATIONS_ENABLED: "Преводите са включен"
+ HTTP_HEADERS: "HTTP заглавки"
+ EXPIRES: "Изтича на"
+ CACHE_CONTROL: "HTTP кеш-контрол"
+ LAST_MODIFIED: "Последна промяна"
+ CACHE_CHECK_METHOD: "Мотод проверка на кеша"
+ CACHE_DRIVER: "Кеш драйвър"
+ CACHE_PREFIX: "Кеш представка"
+ CACHE_PURGE: "Изтриване на стр кеш"
+ LIFETIME: "Продължителност на живот"
+ GZIP_COMPRESSION: "Gzip компресия"
+ GZIP_COMPRESSION_HELP: "Разреши GZip компресия на Grav страницата, за оптимизация."
+ CSS_PIPELINE: "CSS pipeline"
+ JAVASCRIPT_PIPELINE: "JavaScript pipeline"
+ LOG_HANDLER: "Обработка на лога"
+ DEBUGGER: "Дибъгър"
+ SESSION: "Сесия"
+ TIMEOUT: "Таймаут"
+ CURRENT: "Текущ"
+ SAVE_AS: "Запази като"
+ AND: "и"
+ UPDATE_AVAILABLE: "Налична актуализация"
+ FULLY_UPDATED: "Напълно обновен"
+ SAVE_LOCATION: "Местоположение за запис"
+ IGNORE_HIDDEN_HELP: "Игнорирай всички файлове и папки, които започват с точка"
+ WRAPPED_SITE: "Опаковани сайт"
diff --git a/user/plugins/admin/languages/br.yaml b/user/plugins/admin/languages/br.yaml
new file mode 100644
index 0000000..cdd75df
--- /dev/null
+++ b/user/plugins/admin/languages/br.yaml
@@ -0,0 +1,600 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Un ermaeziadenn beta an hini eo! Arverit en endro produadur gant evezh..."
+ ADMIN_REPORT_ISSUE: "Kavet hoc'h eus ur gudenn? Danevellit anezhi war Github."
+ EMAIL_FOOTER: "Lusket gant Grav - Ar CMS Restr plad modern"
+ LOGIN_BTN: "Anv arveriad"
+ LOGIN_BTN_FORGOT: "Ankouaet"
+ LOGIN_BTN_RESET: "Adderaouekaat ar ger-tremen"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Kas an ditouroù adderaouekaat"
+ LOGIN_BTN_CLEAR: "Skarzhañ ar furmskrid"
+ LOGIN_BTN_CREATE_USER: "Krouiñ an arveriad"
+ LOGIN_LOGGED_IN: "Kennasket oc'h gant berzh"
+ LOGIN_FAILED: "C'hwitadenn war ar c'hennask"
+ LOGGED_OUT: "Digennasket oc'h"
+ RESET_NEW_PASSWORD: "Enankit ur ger-tremen nevez …"
+ RESET_LINK_EXPIRED: "Diamzeret eo an ere adderaouekaat, klaskit en-dro"
+ RESET_PASSWORD_RESET: "Adderaouekaet eo bet ar ger-tremen"
+ RESET_INVALID_LINK: "Ere adderaouekaat didalvoudek, klaskit en-dro"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Kaset eo bet an ditouroù da adderaouekaat ho ker-tremen d'ho chmolec'h postel"
+ FORGOT_FAILED_TO_EMAIL: "C'hwitadenn en ur gas an ditouroù, klaskit en-dro diwezhatoc'h"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "N'haller ket adderaouekaat ar ger-tremen evit %s, chomlec'h postel ebet arventennet"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "N'eus ket eus an arveriad gant an anv %s"
+ FORGOT_EMAIL_NOT_CONFIGURED: "N'haller ket adderaouekaat ar ger-tremen. N'eo ket kefluniet al lec'hienn evit kas posteloù"
+ FORGOT_EMAIL_SUBJECT: "%s Goulenn adderaouekaat ar ger-tremen"
+ FORGOT_EMAIL_BODY: "
Adderaouekaat ar ger-tremen/h1>
%1$s,
Graet eo bet un azgoulenn war %4$s evit adderaouekaat ho ker-tremen.
Gallout a rit ivez eilañ an URL da heul er varrenn chomlec'h en ho merdeer:
%2$s
A galon,
%3$s
"
+ MANAGE_PAGES: "Ardeiñ ar pajennoù"
+ CONFIGURATION: "Kefluniadur"
+ PAGES: "Pajennoù"
+ PLUGINS: "Enlugelladoù"
+ PLUGIN: "Enlugellad"
+ THEMES: "Neuzioù"
+ LOGOUT: "Digennaskañ"
+ BACK: "Distreiñ"
+ NEXT: "War-lerc'h"
+ PREVIOUS: "Diaraog"
+ ADD_PAGE: "Ouzhpennañ ur bajenn"
+ ADD_MODULAR: "Ouzhpennañ ur mollad"
+ MOVE: "Dilec'hiañ"
+ DELETE: "Dilemel"
+ VIEW: "Gwel"
+ SAVE: "Enrollañ"
+ NORMAL: "Reoliek"
+ EXPERT: "Kemplezhoc'h"
+ EXPAND_ALL: "Astenn an holl"
+ COLLAPSE_ALL: "Bihanaat an holl"
+ ERROR: "Fazi"
+ CLOSE: "Serriñ"
+ CANCEL: "Nullañ"
+ CONTINUE: "Kenderc'hel"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Kadarnadur azgoulennet"
+ MODAL_CHANGED_DETECTED_TITLE: "Kemmoù dinoet"
+ MODAL_CHANGED_DETECTED_DESC: "Kemmoù dienrollet a zo. Sur oc'h e fell deoc'h kuitaat hep enrollañ?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Kadarnadur azgoulennet"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Sur oc'h e fell deoc'h dilemel ar restr-mañ? N'haller ket dizober ar gwered-mañ."
+ ADD_FILTERS: "Ouzhpennañ siloù"
+ SEARCH_PAGES: "Klask pajennoù"
+ VERSION: "Handelv"
+ WAS_MADE_WITH: "Savet eo bet gant"
+ BY: "Gant"
+ UPDATE_THEME: "Hizivaat an neuz"
+ UPDATE_PLUGIN: "Hizivaat an enlugellad"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "an neuz-mañ a zo hegerz"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "an enlugellad-mañ a zo hegerz"
+ AUTHOR: "Aozer"
+ HOMEPAGE: "Pennbajenn"
+ DEMO: "Tañva"
+ BUG_TRACKER: "Heulier beugoù"
+ KEYWORDS: "Gerioù-alc'hwez"
+ LICENSE: "Lañvaz"
+ DESCRIPTION: "Deskrivadur"
+ README: "Skoazell"
+ REMOVE_THEME: "Dilemel an neuz"
+ INSTALL_THEME: "Staliañ an neuz"
+ THEME: "Neuz"
+ BACK_TO_THEMES: "Distreiñ d'an neuzioù"
+ BACK_TO_PLUGINS: "Distreiñ d'an enlugelladoù"
+ CHECK_FOR_UPDATES: "Klask hizivadennoù"
+ ADD: "Ouzhpenañ"
+ CLEAR_CACHE: "Skarzhañ ar c'hrubuilh"
+ CLEAR_CACHE_ALL_CACHE: "Ar c'hrubuilh a-bezh"
+ CLEAR_CACHE_ASSETS_ONLY: "Loazioù nemetken"
+ CLEAR_CACHE_IMAGES_ONLY: "Skeudennoù nemetken"
+ CLEAR_CACHE_CACHE_ONLY: "Krubuilh nemetken"
+ CLEAR_CACHE_TMP_ONLY: "Padennek hepken"
+ DASHBOARD: "Taolenn labour"
+ UPDATES_AVAILABLE: "Hizivadennoù hegerz"
+ DAYS: "Devezhioù"
+ UPDATE: "Hizivadenn"
+ BACKUP: "Gwared"
+ STATISTICS: "Stadegoù"
+ TODAY: "Hiziv"
+ WEEK: "Sizhun"
+ MONTH: "Miz"
+ LATEST_PAGE_UPDATES: "Hizivadennoù diwezhañ ar bajenn"
+ MAINTENANCE: "Trezalc'h"
+ UPDATED: "Hizivaet"
+ MON: "Lun"
+ TUE: "Meu"
+ WED: "Mer"
+ THU: "Yao"
+ FRI: "Gwe"
+ SAT: "Sad"
+ SUN: "Sul"
+ COPY: "Eilañ"
+ EDIT: "Kemmañ"
+ CREATE: "Krouiñ"
+ GRAV_ADMIN: "Merour Grav"
+ GRAV_OFFICIAL_PLUGIN: "Enlugellad Kefridiel Grav"
+ GRAV_OFFICIAL_THEME: "Neuz Kefridiel Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Gant un ere arouezus eo lakaet an enlugellad. Ne vo ket dinoet an hizivadennoù."
+ THEME_SYMBOLICALLY_LINKED: "Gant un ere arouezus eo lakaet an neuz. Ne vo ket dinoet an hizivadennoù"
+ REMOVE_PLUGIN: "Dilemel an enlugellad"
+ INSTALL_PLUGIN: "Staliañ an enlugellad"
+ AVAILABLE: "Hegerz"
+ INSTALLED: "Staliet"
+ INSTALL: "Staliañ"
+ ACTIVE_THEME: "Neuz oberiant"
+ SWITCHING_TO: "Kemmañ da"
+ SWITCHING_TO_DESCRIPTION: "En ur gemmañ d'un neuz disheñvel n'eus gwarant ebet e vo skoret an holl frammoù pajenn, ar pezh a zegasfe fazioù en ur gargañ ar pajennoù-mañ."
+ SWITCHING_TO_CONFIRMATION: "Fellout a ra deoc'h kenderc'hel ha kemmañ an neuz"
+ CREATE_NEW_USER: "Krouiñ un arveriad nevez"
+ REMOVE_USER: "Dilemel an arveriad"
+ ACCESS_DENIED: "Haeziñ nac'het"
+ ACCOUNT_NOT_ADMIN: "n'hoc'h eus ket an aotreoù a-zere"
+ PHP_INFO: "Titouroù PHP"
+ INSTALLER: "Stalier"
+ AVAILABLE_THEMES: "Neuzioù hegerz"
+ AVAILABLE_PLUGINS: "Enlugelladoù hegerz"
+ INSTALLED_THEMES: "Neuzioù staliet"
+ INSTALLED_PLUGINS: "Enlugelladoù staliet"
+ BROWSE_ERROR_LOGS: "Furchal er c'herzhlevr fazioù"
+ SITE: "Lec'hienn"
+ INFO: "Titouroù"
+ SYSTEM: "Reizhiad"
+ USER: "Arveriad"
+ ADD_ACCOUNT: "Ouzhpennañ ur gont"
+ SWITCH_LANGUAGE: "Kemmañ ar yezh"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Gweredekaet an enlugellad gant berzh"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Diweredekaet an enlugellad gant berzh"
+ SUCCESSFULLY_CHANGED_THEME: "Kemmet an neuz dre ziouer gant berzh"
+ INSTALLATION_FAILED: "C'hwitadenn war ar staliadur"
+ INSTALLATION_SUCCESSFUL: "Berzh war ar staliadur"
+ UNINSTALL_FAILED: "C'hwitadenn war an distaliadur"
+ UNINSTALL_SUCCESSFUL: "Berzh war an distaliadur"
+ SUCCESSFULLY_SAVED: "Enrollet gant berzh"
+ SUCCESSFULLY_COPIED: "Eilet gant berzh"
+ REORDERING_WAS_SUCCESSFUL: "Adurzhiet gant berzh"
+ SUCCESSFULLY_DELETED: "Dilamet gant berzh"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Kemmet ar yezh gant berzh"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "N'ho peus ket trawalc'h a aotreoù evit ar gwered"
+ CACHE_CLEARED: "Skarzhet ar c'hrubuilh"
+ METHOD: "Hentenn"
+ ERROR_CLEARING_CACHE: "Fazi en ur skarzhañ ar c'hrubuilh"
+ AN_ERROR_OCCURRED: "Degouezhet ez eus bet ur fazi"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Prest eo ho kwared da vezañ pellgarget"
+ DOWNLOAD_BACKUP: "Pellgargañ ar gwared"
+ PAGES_FILTERED: "Pajennoù silet"
+ NO_PAGE_FOUND: "Pajenn ebet kavet"
+ INVALID_PARAMETERS: "Arventennoù didalvoudek"
+ NO_FILES_SENT: "Restr ebet kaset"
+ UNKNOWN_ERRORS: "Fazioù dianav"
+ UNSUPPORTED_FILE_TYPE: "Doare restr amskor"
+ FAILED_TO_MOVE_UPLOADED_FILE: "C'hwitadenn en ur zilec'hiañ ar restr pellgaset."
+ FILE_UPLOADED_SUCCESSFULLY: "Restr pellgaset gant berzh"
+ FILE_DELETED: "Restr dilamet"
+ FILE_COULD_NOT_BE_DELETED: "N'haller ket dilemel ar restr"
+ FILE_NOT_FOUND: "N'eus ket bet kavet ar restr"
+ NO_FILE_FOUND: "Restr ebet kavet"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Hizivaet eo bet Grav da"
+ GRAV_UPDATE_FAILED: "C'hwitadenn war hizivadenn Grav"
+ EVERYTHING_UPDATED: "Hizivaet pep tra"
+ UPDATES_FAILED: "C'hwitadenn war a hizivadennoù"
+ AVATAR_BY: "Avatar gant"
+ LAST_BACKUP: "Gwared diwezhañ"
+ FULL_NAME: "Anv klok"
+ USERNAME: "Anv arveriad"
+ EMAIL: "Chomlec'h postel"
+ PASSWORD: "Ger-tremen"
+ PASSWORD_CONFIRM: "Kadarnat ar ger-tremen"
+ TITLE: "Titl"
+ LANGUAGE: "Yezh"
+ ACCOUNT: "Kont"
+ EMAIL_VALIDATION_MESSAGE: "Ret eo reiñ ur chomlec'h postel talvoudek"
+ PASSWORD_VALIDATION_MESSAGE: "Ret eo d'ar ger-tremen enderc'hel ur niverenn, ul lizherenn vras hag ul lizherenn vihan hag 8 arouezenn d'an nebeutañ"
+ LANGUAGE_HELP: "Dibabit ar yezh"
+ MEDIA: "Media"
+ DEFAULTS: "Dre ziouer"
+ SITE_TITLE: "Titl al lec'hienn"
+ SITE_TITLE_PLACEHOLDER: "Titl ledan al lec'hienn"
+ SITE_TITLE_HELP: "Titl dre ziouer ho lec'hienn, arveret en neuzioù"
+ SITE_DEFAULT_LANG: "Yezh defot"
+ DEFAULT_AUTHOR: "Aozer dre ziouer"
+ DEFAULT_AUTHOR_HELP: "Un anv aozer dre ziouer, arveret en neuzioù pe er pajennoù"
+ DEFAULT_EMAIL: "Chomlec'h postel dre ziouer"
+ DEFAULT_EMAIL_HELP: "Ur chomlec'h postel dre ziouer, arveret en neuze pe er pajennoù"
+ TAXONOMY_TYPES: "Doareoù rummadoù"
+ TAXONOMY_TYPES_HELP: "An doareoù rummadoù a rank bezañ erspizet amañ ma fell deoc'h arverañ anezho er pajennoù"
+ PAGE_SUMMARY: "Berradenn ar bajenn"
+ ENABLED: "Gweredekaet"
+ ENABLED_HELP: "Gweredekaat berradenn ar bajenn (ar verradenn a zistro an hevelep tra hag endalc'had ar bajenn)"
+ 'YES': "Ya"
+ 'NO': "Ket"
+ SUMMARY_SIZE: "Ment ar verradenn"
+ SUMMARY_SIZE_HELP: "An niverenn a arouezenn da arverañ evel berradenn ur bajenn"
+ FORMAT: "Mentrezh"
+ FORMAT_HELP: "berr = arverañ degouezh kentañ an disranner pe ment; hir = laosket e vo an disranner berradenn a-gostez"
+ SHORT: "Berr"
+ LONG: "Hir"
+ DELIMITER: "Disranner"
+ DELIMITER_HELP: "Disranner ar verradenn (diouer '===')"
+ METADATA: "Metaroadennoù"
+ METADATA_HELP: "Skrammet e vo ar gwerzhioù metaroadennoù dre ziouer war an holl bajennoù war-bouez m'eo flastret gant ar bajenn"
+ NAME: "Anv"
+ CONTENT: "Endalc'had"
+ REDIRECTS_AND_ROUTES: "Adheñchañ ha treugoù"
+ CUSTOM_REDIRECTS: "Adheñchañ personelaet"
+ CUSTOM_REDIRECTS_HELP: "treugoù da adheñchañ davet pajennoù all. Talvoudek eo an amsaviñ regex"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/un/anv"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/un/adeñchañ"
+ CUSTOM_ROUTES: "Treugoù personelaet"
+ CUSTOM_ROUTES_HELP: "treugoù da adheñchañ davet pajennoù all. Talvoudek eo an amsaviñ Regex"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/ho/anv"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/ho/treug"
+ FILE_STREAMS: "Lanvioù restroù"
+ DEFAULT: "Dre ziouer"
+ PAGE_MEDIA: "Media ar bajenn"
+ OPTIONS: "Dibarzhioù"
+ PUBLISHED: "Embannet"
+ PUBLISHED_HELP: "Dre ziouer eo embannet ur bajenn war-bouez m'eo lakaet da \"Embannet: ket\" pe dre un deiziad embann en dazont, pe un deiziad diembannañ tremenet"
+ DATE: "Deiziad"
+ DATE_HELP: "Ar vaezienn deiziad a laosk ac'hanoc'h da arventennañ un deiziad liammet gant ar bajenn."
+ PUBLISHED_DATE: "Deiziad embann"
+ PUBLISHED_DATE_HELP: "Gallout a rit reiñ un deiziad da embann ent emgefreek."
+ UNPUBLISHED_DATE: "Deiziad diembannañ"
+ UNPUBLISHED_DATE_HELP: "Gallout a rit reiñ un deiziad evit diembannañ ent emgefreek."
+ ROBOTS: "Robotoù"
+ TAXONOMIES: "Rummadoù"
+ TAXONOMY: "Rummad"
+ ADVANCED: "Kempleshoc'h"
+ SETTINGS: "Arventennoù"
+ FOLDER_NUMERIC_PREFIX: "Rakger niverel an teuliad"
+ FOLDER_NUMERIC_PREFIX_HELP: "Rakgerioù niverel evit urzhiañ gant an dorn ha emplegañ ar gwelusted"
+ FOLDER_NAME: "Anv an teuliad"
+ FOLDER_NAME_HELP: "Anv an teuliad a vo kadavet er reizhiad restroù evit ar bajenn"
+ PARENT: "Kar"
+ DEFAULT_OPTION_ROOT: "- Gwrizienn -"
+ DEFAULT_OPTION_SELECT: "- Diuzañ -"
+ DISPLAY_TEMPLATE: "Skrammañ ar patrom"
+ DISPLAY_TEMPLATE_HELP: "An doare pajenn a ziviz peseurt patrom twig a zeznaouo ar bajenn"
+ BODY_CLASSES: "Klasoù korf"
+ ORDERING: "Urzh"
+ PAGE_ORDER: "Urzh ar pajennoù"
+ OVERRIDES: "Flastrañ"
+ MENU: "Lañser"
+ MENU_HELP: "Ar chadennoù da arverañ el lañser. Ma n'eo ket arventennet, Titl a vo arveret."
+ SLUG: "Slug"
+ SLUG_HELP: "An argemenn slug a aotren ac'hanoc'h da arventennañ URL lodenn ar bajenn"
+ SLUG_VALIDATE_MESSAGE: "Lizherennoù bihan, sifroù ha tiredoù a c'hall bezañ er slug hepken"
+ PROCESS: "Keweriañ"
+ PROCESS_HELP: "Reoliañ penaos eo keweriet ar pajennoù. Gallout a ra bezañ lakaet dre bajenn kentoc'h eget en un doare hollek"
+ DEFAULT_CHILD_TYPE: "Doare bugel dre ziouer"
+ USE_GLOBAL: "Arverañ Hollek"
+ ROUTABLE: "Treugus"
+ ROUTABLE_HELP: "M'eo haezadus ar bajenn dre un URL"
+ CACHING: "Krubuilhiñ"
+ VISIBLE: "Gwelus"
+ VISIBLE_HELP: "Despizañ a ra gwelusted ur bajenn er merdeiñ."
+ DISABLED: "Diweredekaet"
+ ITEMS: "Ergorennoù"
+ ORDER_BY: "Urzhiañ dre"
+ ORDER: "Urzh"
+ FOLDER: "Teuliad"
+ ASCENDING: "War-gresk"
+ DESCENDING: "War-zigresk"
+ ADD_MODULAR_CONTENT: "Ouzhpennañ un endalc'had molladel"
+ PAGE_TITLE: "Titl ar bajenn"
+ PAGE_TITLE_HELP: "Titl ar bajenn"
+ PAGE: "Pajenn"
+ MODULAR_TEMPLATE: "Patrom molladel"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Anv ar restr"
+ PARENT_PAGE: "Pajenn gar"
+ HOME_PAGE: "Pennbajenn"
+ HOME_PAGE_HELP: "Pajenn arveret gant Grav evel pajenn degemer dre ziouer"
+ DEFAULT_THEME: "Neuz dre ziouer"
+ DEFAULT_THEME_HELP: "Arventennañ an neuz arveret gant Grav dre ziouer (Antimatter dre ziouer)"
+ TIMEZONE: "Gwerzhid-eur"
+ TIMEZONE_HELP: "Flastrañ gwerzhid-eur dre ziouer an dafariad"
+ SHORT_DATE_FORMAT: "Mentrezh skrammañ an deiziad berr"
+ SHORT_DATE_FORMAT_HELP: "Arventennan ar mentrezh deiziad berr da arverañ gant an neuzioù"
+ LONG_DATE_FORMAT: "Mentrezh deiziad hir"
+ LONG_DATE_FORMAT_HELP: "Arventennañ ar mentrezh deiziad hir a vo arveret en neuzioù"
+ DEFAULT_ORDERING: "Urzh dre ziouer"
+ DEFAULT_ORDERING_HELP: "Pajennoù er roll a vo skrammet en urzh-mañ war-bouez m'eo flastret"
+ DEFAULT_ORDERING_DEFAULT: "Dre ziouer - diazezet war anv an teuliad"
+ DEFAULT_ORDERING_FOLDER: "Teuliad - diazezet war anv an teuliad hep rakger"
+ DEFAULT_ORDERING_TITLE: "Titl - diazezet war vaezienn ditl an talbenn"
+ DEFAULT_ORDERING_DATE: "Deiziad - diazezet war vaezienn deiziad an talbenn"
+ DEFAULT_ORDER_DIRECTION: "Tu an urzh dre ziouer"
+ DEFAULT_ORDER_DIRECTION_HELP: "Tu ar pajennoù er roll"
+ DEFAULT_PAGE_COUNT: "Niver a bajennoù dre ziouer"
+ DEFAULT_PAGE_COUNT_HELP: "Niver a bajennoù en ur roll d'ar muiañ"
+ DATE_BASED_PUBLISHING: "Embannadenn diazezet war un deiziad"
+ DATE_BASED_PUBLISHING_HELP: "(Di)embann pennadoù ent emgefreek hervez o deiziad"
+ EVENTS: "Darvoudoù"
+ EVENTS_HELP: "(Di)weredekaat darvoudoù resis. Diweredekaat anezho a c'hall terriñ enlugelladoù"
+ REDIRECT_DEFAULT_ROUTE: "Adheñchañ an treug dre ziouer"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Adheñchañ ent emgefreek d'un treug pajenn dre ziouer"
+ LANGUAGES: "Yezhoù"
+ SUPPORTED: "Skoret"
+ SUPPORTED_HELP: "Roll bonegoù yezh 2 lizherenn ennañ disrannet gant skejoù (skouer: 'br, cy, en')"
+ TRANSLATIONS_ENABLED: "Troidigezhioù gweredekaet"
+ TRANSLATIONS_ENABLED_HELP: "Skor an troidigezhioù e Grav, an enlugelladoù hag an askouezhioù"
+ TRANSLATIONS_FALLBACK: "Troidigezh dre ziouer"
+ TRANSLATIONS_FALLBACK_HELP: "Arverañ un droidigezh all ma n'eus ket eus ar tezh oberiant"
+ ACTIVE_LANGUAGE_IN_SESSION: "Yezhoù oberiant en estez"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Kadaviñ ar yezh oberiant en estez"
+ HTTP_HEADERS: "Talbennoù HTTP"
+ EXPIRES: "Diamzer"
+ EXPIRES_HELP: "Arventennañ an talbenn diamzeriñ e eilennoù."
+ LAST_MODIFIED: "Kemmet da ziwezhañ"
+ LAST_MODIFIED_HELP: "Arventennañ an talbenn kemmet da ziwezhañ a c'hall skoazell da wellaat ar proksi ha krubuilh ar merdeer"
+ ETAG: "ETag"
+ ETAG_HELP: "Arventennañ an talbenn etag evit skoazell da c'houzout peur eo bet kemmet ur bajenn"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Arventennañ a ra an talbenn `Vary: Accept Encoding` evit skoazell gant ar proksi hag ar c'hrubuilh CDN"
+ MARKDOWN_EXTRA_HELP: "Gweredekaat ar skor dre ziouer evit Markdown Ectra - https://michelf.ca/projects/php-markdown/extra/"
+ AUTO_LINE_BREAKS: "Tremen d'al linenn ent emgefreek"
+ AUTO_LINE_BREAKS_HELP: "Gweredekaat skor tremen al linenn ent emgefreek e Markdown"
+ AUTO_URL_LINKS: "Ereoù URL emgefreek"
+ AUTO_URL_LINKS_HELP: "Gweredekaat amdroadur emgefreek an URLoù da ereoù HTML"
+ ESCAPE_MARKUP: "Gwareziñ an HTML"
+ ESCAPE_MARKUP_HELP: "Gwareziñ ar c'hlavioù e elfennoù HTML"
+ CACHING_HELP: "Trec'haoler hollek evit (di)weredekaat krubuilh Grav"
+ CACHE_CHECK_METHOD: "Hentenn gwiriekaat ar c'hrubuilh"
+ CACHE_CHECK_METHOD_HELP: "Dibab an hentenn arveret gant Grav evit gwiriekaat m'eo bet kemmer ar restoù pajenn."
+ CACHE_DRIVER: "Sturier Krubuilh"
+ CACHE_DRIVER_HELP: "Dibab pe sturier krubuilh a zo arveret Grav. 'Dinoiñ emgefreek' a glask kavout pe zoare a zo an hini gwellañ"
+ CACHE_PREFIX: "Rakger ar c'hrubuilh"
+ CACHE_PREFIX_HELP: "Lodenn naoudi an alc'hwez Grav. Na gemmit anezhi ma n'ouzit ket petra rit."
+ CACHE_PREFIX_PLACEHOLDER: "Deveret eus an URL diazez (flastret en un enkañ ur chadenn dargouezhek)"
+ LIFETIME: "Padelezh buhez"
+ LIFETIME_HELP: "Arventennañ padelezh ar c'hrubuilh e eilennoù. 0 = anvevenn"
+ GZIP_COMPRESSION: "Koazhadur Gzip"
+ GZIP_COMPRESSION_HELP: "Gweredekaat koazhadur Gzip ar bajenn Grav evit kreskiñ an digonusted."
+ TWIG_TEMPLATING: "Patromiñ Twig"
+ TWIG_CACHING: "Krubuilh Twig"
+ TWIG_CACHING_HELP: "Reoliañ wikefre krubuilh Twig. Laoskit gweredekaet evit an digonusted gwellañ."
+ TWIG_DEBUG: "Diveugañ Twig"
+ TWIG_DEBUG_HELP: "Aotren an dibarzh evit chom hep kargañ an askouezh diveugañ Twig"
+ DETECT_CHANGES: "Dinoiñ ar c'hemmoù"
+ DETECT_CHANGES_HELP: "Adkempunet e vo krubuilh Twig ent emgefreek ma vez dinoet kemmoù er patromoù Twig"
+ AUTOESCAPE_VARIABLES: "Gwareziñ an argemennoù ent emgefreek"
+ AUTOESCAPE_VARIABLES_HELP: "Gwareziñ an holl argemennoù ent emgefreek. Moarvat e torro ho lec'hienn"
+ ASSETS: "Madoù"
+ CSS_PIPELINE: "Arrevellañ CSS"
+ CSS_PIPELINE_HELP: "Arrevellañ ar CSS a zo unvanadur meur a loaz CSS en ur restr hepken"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Ebarzhiñ restroù estren en arrevellañ CSS"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "URLoù diavaez a zo gant daveoù restroù daveel a-wechoù ha ne rankont ket bezañ arrevellet"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Deoueziñ an arrevellañ CSS da gentañ"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Deoueziñ an arrevellañ CSS a-raok kement dave CSS all ha n'int ket enkorfet"
+ CSS_MINIFY: "Bihanadur CSS"
+ CSS_MINIFY_HELP: "Bihanaat ar CSS e-pad an arrevellañ"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "Amsaviñ bihanadur ar CSS Windows"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Amsaviñ ar bihanadur evit savennoù Windows. Faos dre ziouer abalamour da ThreadStackSize"
+ CSS_REWRITE: "Adskrivañ CSS"
+ CSS_REWRITE_HELP: "Adskrivañ kement URL daveel CSS e-pad an arrevellañ"
+ JAVASCRIPT_PIPELINE: "Arrevellañ Javascript"
+ JAVASCRIPT_PIPELINE_HELP: "An arrevellañ JS a zo unvanadur meur a restr JS en ur restr hepken"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Enkorfañ ar JS diavaez evit an arrevellañ"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Urloù diavaez o deus daveoù restroù daveel a-wechoù ha ne rankont ket bezañ arrevellet"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Arrevellañ JS da gentañ"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Deoueziñ an arrevellañ JS a-raok kement dave JS all ha n'int ket enkorfet"
+ JAVASCRIPT_MINIFY: "Bihanat ar javascript"
+ JAVASCRIPT_MINIFY_HELP: "Bihanaat ar JS e-pad an arrevellañ"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Gweredekaat ar boneg-amzer war al loazioù"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Gweredekaat bonegoù-amzer al loazioù"
+ COLLECTIONS: "Dastumadegoù"
+ ERROR_HANDLER: "Dornataour fazioù"
+ DISPLAY_ERRORS: "Skrammañ ar fazioù"
+ DISPLAY_ERRORS_HELP: "Skrammañ ur bajenn fazi gant munudoù"
+ LOG_ERRORS: "Kerzhlevr ar fazioù"
+ LOG_ERRORS_HELP: "Lakaat kerzhlevr ar fazioù en teuliad /logs"
+ DEBUGGER: "Diveuger"
+ DEBUGGER_HELP: "Gweredekaat diveuger Grav hag an arventennoù da heul"
+ DEBUG_TWIG: "Diveugañ Twig"
+ DEBUG_TWIG_HELP: "Gweredekaat diveugañ ar patromoù Twig"
+ SHUTDOWN_CLOSE_CONNECTION: "Shutdown a serr ar c'hennask"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Serriñ ar c'hennask a-raok gervel onShutdown(). 'false' evit diveugañ"
+ DEFAULT_IMAGE_QUALITY: "Perzhded skeudenn dre ziouer"
+ DEFAULT_IMAGE_QUALITY_HELP: "Perzhded skeudenn dre ziouer da arverañ e-pad adstandilhonañ ar skeudennoù (85%)"
+ CACHE_ALL: "Lakaat an holl skeudennoù er c'hrubuilh"
+ CACHE_ALL_HELP: "Lakaat an holl skeudennoù da dremen dre reizhiad krubuilh Grav zoken ma n'o deus dornatadur media ebet"
+ IMAGES_DEBUG: "Rouedigell diveugañ ar skeudenn"
+ IMAGES_DEBUG_HELP: "Diskouez un diflugell a-us d'ar skeudennoù a ziskouez an donder piksel pa labourer war Retina da skouer"
+ UPLOAD_LIMIT: "Bevenn ment ar restroù da bellgas"
+ UPLOAD_LIMIT_HELP: "Lakaat ar ment restroù uhelañ e eizhbitoù (0 a zo anvevenn)"
+ ENABLE_MEDIA_TIMESTAMP: "Gweredekaat ar boneg-amzer war ar media"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Ouzhpennañ ur boneg-amzer diazezet war an deiziad kemmadur evit pep elfenn media"
+ SESSION: "Estez"
+ SESSION_ENABLED_HELP: "Gweredekaat skor an estez evit Grav"
+ TIMEOUT: "Diamzeriñ"
+ TIMEOUT_HELP: "Lakaat an amzer diamzeriñ e eilennoù"
+ SESSION_NAME_HELP: "Un naoudi arveret da stummañ anv toupin an estez"
+ ABSOLUTE_URLS: "URL dizave"
+ ABSOLUTE_URLS_HELP: "URLoù dizave pe daveel evit 'base_url'"
+ PARAMETER_SEPARATOR: "Disranner arventenn"
+ PARAMETER_SEPARATOR_HELP: "An disranner evit an arventennoù tremenet a c'hall bezañ kemmet evit Apache war Windows"
+ TASK_COMPLETED: "Trevell echuet"
+ EVERYTHING_UP_TO_DATE: "Pep tra a zo hizivaet"
+ UPDATES_ARE_AVAILABLE: "hizivadennoù hegerz"
+ IS_AVAILABLE_FOR_UPDATE: "a zo gant un hizivadenn hegerz"
+ IS_NOW_AVAILABLE: "a zo hegerz"
+ CURRENT: "Bremanel"
+ UPDATE_GRAV_NOW: "Hizivaat Grav bremañ"
+ GRAV_SYMBOLICALLY_LINKED: "Gant un ere arouezel eo staliet Grav. Dihegerz eo an hizivadenn"
+ UPDATING_PLEASE_WAIT: "Oc'h hizivaat... gortozit, emañ o pellgargañ"
+ OF_THIS: "eus an"
+ OF_YOUR: "eus ho"
+ HAVE_AN_UPDATE_AVAILABLE: "en deus un hizivadenn hegerz"
+ SAVE_AS: "Enrollañ evel"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Sur oc'h e fell deoc'h dilemel ar bajenn-mañ hag holl he bugale? M'eo troet ar bajenn en ur yezh all e vo miret an troidigezhioù a rankout a reot o dilemel en un doare distag. E mod all e vo dilamet teuliad ar bajenn gant an is-pajennoù. N'haller ket dizober ar gwered-mañ."
+ AND: "ha"
+ UPDATE_AVAILABLE: "Hizivadenn hegerz"
+ METADATA_KEY: "Alc'hwez (sk. 'Gerioù-alc'hwez')"
+ METADATA_VALUE: "Gwerzh (sk. 'Blog, Grav')"
+ USERNAME_HELP: "Etre 3 ha 16 arouezenn e rank an anv arveriad bezañ o kontañ al lizherennoù bihan, an niverennoù, an islinennoù hag ar barrennigoù. N'eo ket aotreet al lizherennoù bras, an esaouennoù hag an arouezennoù arbennik"
+ FULLY_UPDATED: "Hizivaet"
+ SAVE_LOCATION: "Lec'hiadur enrollañ"
+ PAGE_FILE: "Patrom pajenn"
+ PAGE_FILE_HELP: "Anv restr patrom ar bajenn, ha patrom skrammañ ar bajenn dre ziouer"
+ NO_USER_ACCOUNTS: "Kont arveriad ebet kavet, krouit unan da gentañ..."
+ REDIRECT_TRAILING_SLASH: "Adheñchañ ar veskell dibenn"
+ REDIRECT_TRAILING_SLASH_HELP: "Ober un adheñchañ 301 e-lerc'h merañ an beskell dibenn an URI en un doare treuzwelus."
+ DEFAULT_DATE_FORMAT: "Mentrezh deiziad ar bajenn"
+ DEFAULT_DATE_FORMAT_HELP: "Mentrezh deiziad ar bajenn arveret gant Grav. Dre ziouer, Grav a glask divinout mentrezh an deiziad met gallout a rit erspizañ unan gant kevreadur deiziad PHP (sk.: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Divinout en emgefreek"
+ IGNORE_FILES: "Leuskel restroù a-gostez"
+ IGNORE_FILES_HELP: "Restroù da leuskel a-gostez e-pad keweriañ ar pajennoù"
+ IGNORE_FOLDERS: "Leuskel teuliadoù a-gostez"
+ IGNORE_FOLDERS_HELP: "Teuliadoù resis da leuskel a-gostez e-pad keweriañ ar pajennoù"
+ HTTP_ACCEPT_LANGUAGE: "Lakaat yezh ar merdeer"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Gallout a rit klask arventennañ ar yezh gant hini ar talbenn `http_accept_language` ar merdeer"
+ OVERRIDE_LOCALE: "Flastrañ ar yezh"
+ OVERRIDE_LOCALE_HELP: "Flastrañ arventenn yezh PHP diazezet war ar yezh vremanel"
+ REDIRECT: "Adheñchañ ar bajenn"
+ REDIRECT_HELP: "Enankit hent ur bajenn pe un URL diavaez da adheñchañ ar bajenn. Sk. '/un/hent' pe 'http://ulload.bzh'"
+ PLUGIN_STATUS: "Stad an elugellad"
+ INCLUDE_DEFAULT_LANG: "Enkorfañ ar yezh dre ziouer"
+ INCLUDE_DEFAULT_LANG_HELP: "Ouzhpennañ a raio ar yezh dre ziouer en holl URLoù er yezh dre ziouer. Sk. '/br/blog/post'"
+ ALLOW_URL_TAXONOMY_FILTERS: "URL siloù rummad"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Dastumadegoù pajennoù a aotren ac'hanoc'h da silañ dre '/rummad:gwerzh'."
+ REDIRECT_DEFAULT_CODE: "Boneg adheñchan dre ziouer"
+ REDIRECT_DEFAULT_CODE_HELP: "Boneg stad HTTP da arverañ evit adheñchañ"
+ IGNORE_HIDDEN: "Leuskel ar re kuzhet a-gostez"
+ IGNORE_HIDDEN_HELP: "Leuskel an holl restroù ha teuliadoù a grog gant ur POENT"
+ WRAPPED_SITE: "Lec'hienn enkorfet"
+ WRAPPED_SITE_HELP: "Evit ma ouife an neuzioù/enlugelladoù m'eo enkorfet Grav en ur savenn all"
+ FALLBACK_TYPES: "Aotren doareoù fallback"
+ FALLBACK_TYPES_HELP: "Doareoù restr aotreet a c'hall bezañ kavet m'int haezet dre hent ar bajenn. An holl zoareoù media skoret dre ziouer."
+ INLINE_TYPES: "Doareoù fallback enkorfet"
+ INLINE_TYPES_HELP: "Ur roll doareoù restroù a rank bezañ skrammet en un doare enkorfet kentoc'h eget pellgarget"
+ APPEND_URL_EXT: "Ouzhpennañ an astenn d'an URL"
+ APPEND_URL_EXT_HELP: "Ouzhpennañ a raio un astenn personelaet da URL ar bajenn. Talvezout a ra e glasko Grav ur patrom anvet `..twig`"
+ PAGE_MODES: "Modoù pajenn"
+ PAGE_TYPES: "Doareoù pajenn"
+ ACCESS_LEVELS: "Liveoù haeziñ"
+ GROUPS: "Strolladoù"
+ GROUPS_HELP: "Roll ar strolladoù gant an arveriad enno"
+ ADMIN_ACCESS: "Haeziñ ardoer"
+ SITE_ACCESS: "Haeziñ d'al lec'hienn"
+ INVALID_SECURITY_TOKEN: "Reveziadenn diogelroez didalvoudek"
+ ACTIVATE: "Gweredekaat"
+ TWIG_UMASK_FIX: "Ratreadur Umask"
+ TWIG_UMASK_FIX_HELP: "Twig a grou ar restroù krubuilh gant 0755 dre ziouer, ar ratreañ a lak anezho da 0755"
+ CACHE_PERMS: "Aotreoù ar c'hrubuilh"
+ CACHE_PERMS_HELP: "Aotreoù dre ziouer teuliad ar c'hrubuilh. 0755 pe 0775 peurvuiañ, hervez ar c'hefluniadur"
+ REMOVE_SUCCESSFUL: "Dilamet gant berzh"
+ REMOVE_FAILED: "C'hwitadenn war an dilemel"
+ HIDE_HOME_IN_URLS: "Kuzhat hent ar pennbajenn en URL"
+ HIDE_HOME_IN_URLS_HELP: "Gwiriekaat a raio n'eo ket daveet hent skoueriek an degemer gant hentoù dre ziouer ar pajennoù dindan an degemer"
+ TWIG_FIRST: "Keweriañ an Twig da gentañ"
+ TWIG_FIRST_HELP: "M'ho peus gweredekaat keweriañ ar bajenn Twig e c'hallit kefluniañ Twig evit e geweriañ a-raok pe goude ar Markdown"
+ SESSION_SECURE: "Diogel"
+ SESSION_SECURE_HELP: "M'eo gwir, diskouez a ra eo ret d'ar c'hehentiñ evit an toupin-mañ bezañ graet war un treuzkas diogel. DIWALLIT: Gweredekait an dra-se war lec'hiennoù e HTTPS nemetken"
+ SESSION_HTTPONLY: "HTTP nemetken"
+ SESSION_HTTPONLY_HELP: "M'eo gwir, diskouez a ra eo ret d'ar c'hehentiñ evit an toupin-mañ bezañ graet war un treuzkas HTTP ha n'eo ket aotreet kemmañ ar Javascript"
+ REVERSE_PROXY: "Proksi en tu-gin"
+ REVERSE_PROXY_HELP: "Gweredekait an dra-se m'hoc'h a-dreñv ur proksi en tu-gin hag ho peus diaesterioù gant an URLoù oc'h enderc'hel ur porzh didalvoudek"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmatter didalvoudek, n'haller ket enrollan"
+ ADD_FOLDER: "Ouzhpennañ un teuliad"
+ PROXY_URL: "URL ar proksi"
+ PROXY_URL_HELP: "Enankit HERBERC'HIER pe IP ar proksi hag ar PORZH"
+ NOTHING_TO_SAVE: "Netra da enrollañ"
+ FILE_ERROR_ADD: "Degouezhet ez eus bet ur fazi en ur glask enrollañ ar restr"
+ FILE_ERROR_UPLOAD: "Degouezhet ez eus bet ur fazi en ur glask pellgas ar restr"
+ FILE_UNSUPPORTED: "Doare restr anskor"
+ ADD_ITEM: "Ouzhpennañ un elfenn"
+ FILE_TOO_LARGE: "Re leden eo ar restr evit bezañ pellgaset. %s eo an uhelañ aotreet hervez hoc'h arventennoù PHP. Kreskit an arventenn PHP`post_max_size`"
+ INSTALLING: "O staliañ"
+ LOADING: "O kargañ.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Ret eo deoc'h staliañ an amzalc'hoù da-heul a-raok:"
+ ERROR_INSTALLING_PACKAGES: "Fazi en ur staliañ ar pakad(où)"
+ INSTALLING_DEPENDENCIES: "O staliañ an amzalc'hoù..."
+ INSTALLING_PACKAGES: "O staliañ ar pakad(où).."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Pakad(où) staliet gant berzh."
+ READY_TO_INSTALL_PACKAGES: "Prest da staliañ ar pakad(où)"
+ PACKAGES_NOT_INSTALLED: "N'eo ket stalied ar pakadoù"
+ PACKAGES_NEED_UPDATE: "Staliet eo ar pakadoù endeo, met re gozh eo"
+ PACKAGES_SUGGESTED_UPDATE: "Staliet eo ar pakadoù endeo, dereat eo an handelv, met hizivaet e vint evit ma vefec'h en handelv diwezhañ"
+ REMOVE_THE: "Dilemel an %s"
+ CONFIRM_REMOVAL: "Sur oc'h e fell deoc'h dilemel %s?"
+ REMOVED_SUCCESSFULLY: "%s dilamet gant berzh"
+ ERROR_REMOVING_THE: "Fazi en ur zilemel %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "An amzalc'hoù da heul a zo azgoulennet gant %s, met n'eo ket azgoulennet gant ur pakad all. Ma ne arverit ket anezho e c'hallit o dilemel adalek amañ."
+ READY_TO_UPDATE_PACKAGES: "Prest da hizivaat ar pakad(où)"
+ ERROR_UPDATING_PACKAGES: "Fazi en ur hizivaat ar pakad(où)"
+ UPDATING_PACKAGES: "Oc'h hizivaat ar pakad(où).."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Pakad(où) hizivaet gant berzh."
+ UPDATING: "Hizivaet"
+ GPM_RELEASES: "Ermaeziadennoù GPM"
+ GPM_RELEASES_HELP: "Dibabit 'Amprouiñ' evit staliañ an handelv beta pe amprouiñ"
+ AUTO: "Oto"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabil"
+ TESTING: "Amprouiñ"
+ FRONTMATTER_PROCESS_TWIG: "Keweriañ frontmatter Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "P'eo oberiant e c'hallit arverañ argemennoù kefluniañ Twig e frontmatter ar bajenn"
+ FRONTMATTER_IGNORE_FIELDS: "Leuskel maeziennoù Frontmatter a-gostez"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Maeziennoù Frontmatter a c'hall enderc'hel Twig met ne rankont ket bezañ keweriet, evel 'forms'"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Pakad %s staliet gant berzh"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Urzh ar c'har, diweredekaet eo an urzhiañ"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Diwelus eo ar bajenn, diweredekaet eo an urzhiañ"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "N'eo ket skoret an urzhiañ dre an ardeiñ dre ma zo ouzhpenn 200 c'hoar"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "EVEZHIADENN: n'hallit ket ouzhpennañ restroù media evit enrollañ ar bajenn. Klikit war 'Enrollañ' a-us"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "EVEZHIADENN: ret eo enrollañ ar bajenn a-raok pellgas restroù dezhi."
+ DROP_FILES_HERE_TO_UPLOAD: "Lakait ho restroù amañ pe klikit amañ"
+ INSERT: "Enlakaat"
+ UNDO: "Dizober"
+ REDO: "Adober"
+ HEADERS: "Talbennoù"
+ BOLD: "Tev"
+ ITALIC: "Stouet"
+ STRIKETHROUGH: "Barrennet"
+ SUMMARY_DELIMITER: "Bonner diverrad"
+ LINK: "Liamm"
+ IMAGE: "Skeudenn"
+ BLOCKQUOTE: "Meneg"
+ UNORDERED_LIST: "Roll dizurzh"
+ ORDERED_LIST: "Roll urzhiet"
+ EDITOR: "Embanner"
+ PREVIEW: "Alberz"
+ FULLSCREEN: "Skramm a-bezh"
+ MODULAR: "Modulel"
+ NON_ROUTABLE: "Dihentus"
+ NON_MODULAR: "Divodulel"
+ NON_VISIBLE: "Diwelus"
+ NON_PUBLISHED: "Diembannet"
+ CHARACTERS: "arouezioù"
+ PUBLISHING: "Embann"
+ NOTIFICATIONS: "Notifiadenn"
+ MEDIA_TYPES: "Doareoù media"
+ IMAGE_OPTIONS: "Opsionoù skeudenn"
+ MIME_TYPE: "Doare Mime"
+ THUMB: "Miniaturenn"
+ TYPE: "Doare"
+ FILE_EXTENSION: "Astenn ar fichenn"
+ LEGEND: "Alc'hwez ar bajenn"
+ MEMCACHE_SERVER: "Servijer Memcached"
+ MEMCACHE_SERVER_HELP: "Chomlec'h ar servijer Memcached"
+ MEMCACHE_PORT: "Porzh Memcached"
+ MEMCACHE_PORT_HELP: "Porzh ar servijer Memcached"
+ MEMCACHED_SERVER: "Servijer Memcached"
+ MEMCACHED_SERVER_HELP: "Chomlec'h ar servijer Memcached"
+ MEMCACHED_PORT: "Porzh Memcached"
+ MEMCACHED_PORT_HELP: "Porzh ar servijer Memcached"
+ REDIS_SERVER: "Servijer Redis"
+ REDIS_SERVER_HELP: "Chomlec'h ar servijer Redis"
+ REDIS_PORT: "Porzh Redis"
+ REDIS_PORT_HELP: "Porzh ar servijer Redis"
+ ALL: "Tout"
+ FROM: "eus"
+ TO: "da"
+ RESOURCE_FILTER: "Sil..."
+ FORCE_SSL: "Forsañ SSL"
+ DROPZONE_CANCEL_UPLOAD: 'Nullañ ar gargamant'
+ DROPZONE_REMOVE_FILE: "Dilemel ar fichenn"
+ PREMIUM_PRODUCT: "Premium"
+ ERROR_SIMPLE: "Fazi simpl"
+ ERROR_SYSTEM: "Fazi Sistem"
+ NOT_SET: "Pas termenet"
+ PERMISSIONS: "Permisionoù"
+ REINSTALL_PLUGIN: "Adstaliañ ar Plugin"
+ REINSTALL_THEME: "Adstaliañ an Tem"
+ REINSTALL_THE: "Adstaliañ ar %s"
+ REINSTALLATION_FAILED: "Adstaliañ c'hwitet"
+ TOOLS: "Ostilhoù"
+ DIRECT_INSTALL: "Staliañ war-eeun"
+ 2FA_CODE_INPUT: "000000"
diff --git a/user/plugins/admin/languages/ca.yaml b/user/plugins/admin/languages/ca.yaml
new file mode 100644
index 0000000..8a848cd
--- /dev/null
+++ b/user/plugins/admin/languages/ca.yaml
@@ -0,0 +1,641 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Aquesta és una versió beta! Utilitza-la en producció sota el teu propi risc..."
+ ADMIN_REPORT_ISSUE: "Has trobat algun problema? Sisplau, reporta'l a GitHub."
+ EMAIL_FOOTER: "Funcionant amb Grav - El CMS de fitxers plans modern"
+ LOGIN_BTN: "Inicia sessió"
+ LOGIN_BTN_FORGOT: "Ho he oblidat"
+ LOGIN_BTN_RESET: "Restablir contrasenya"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Envia instruccions pel reset"
+ LOGIN_BTN_CLEAR: "Netejar formulari"
+ LOGIN_BTN_CREATE_USER: "Crear usuari"
+ LOGIN_LOGGED_IN: "S'ha iniciat sessió correctament"
+ LOGIN_FAILED: "No s'ha pogut iniciar sessió"
+ LOGGED_OUT: "S'ha tancat la sessió"
+ RESET_NEW_PASSWORD: "Sisplau introdueix una nova contasenya …"
+ RESET_LINK_EXPIRED: "L'enllaç per a restablir contrasenya ha expirat, torna a provar"
+ RESET_PASSWORD_RESET: "S'ha restablert la contrasenya"
+ RESET_INVALID_LINK: "L'enllaç per a restablir contrasenya invàl·lid, torna a provar"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Les instruccions per a restablir la contrasenya s'han enviat per correu electrònic a %s"
+ FORGOT_FAILED_TO_EMAIL: "S'ha fallat al enviar les instruccions, sisplau torna-ho a provar"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "No es pot restablir la contrasenya per a %s, no té cap email assignat"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "L'usuari %s no existeix"
+ FORGOT_EMAIL_NOT_CONFIGURED: "No es pot restablir la contrasenya. Aquest lloc no està configurat per enviar missatges de correu electrònic"
+ FORGOT_EMAIL_SUBJECT: "%s Petició de restabliment de contrasenya"
+ FORGOT_EMAIL_BODY: "
Restabliment de contrasenya
Benvolgut/da %1$s,
S'ha fet una petició a %4$s per a restablir la contrasenya.
"
+ MANAGE_PAGES: "Gestiona pàgines"
+ CONFIGURATION: "Configuració"
+ PAGES: "Pàgines"
+ PLUGINS: "Plugins"
+ PLUGIN: "Plugin"
+ THEMES: "Temes"
+ LOGOUT: "Tanca sessió"
+ BACK: "Enrere"
+ ADD_PAGE: "Afegeix pàgina"
+ ADD_MODULAR: "Afegeix modular"
+ MOVE: "Mou"
+ DELETE: "Esborra"
+ SAVE: "Desa"
+ NORMAL: "Normal"
+ EXPERT: "Expert"
+ EXPAND_ALL: "Expandeix tot"
+ COLLAPSE_ALL: "Col·lapsa tot"
+ ERROR: "Error"
+ CLOSE: "Tanca"
+ CANCEL: "Cancel·la"
+ CONTINUE: "Continua"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Confirmació requerida"
+ MODAL_CHANGED_DETECTED_TITLE: "Canvis detectats"
+ MODAL_CHANGED_DETECTED_DESC: "Tens canvis no desats. Estàs segur que vols sortir sense desar?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Confirmació requerida"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Estàs segur que vols eliminar aquest fitxer? Aquesta acció no es pot desfer."
+ ADD_FILTERS: "Afegeix filtres"
+ SEARCH_PAGES: "Cerca pàgines"
+ VERSION: "Versió"
+ WAS_MADE_WITH: "Es va fer amb"
+ BY: "Per"
+ UPDATE_THEME: "Actualitza tema"
+ UPDATE_PLUGIN: "Actualitza plugin"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "d'aquest tema està disponible"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "d'aquest plugin està disponible"
+ AUTHOR: "Autor/a"
+ HOMEPAGE: "Pàgina d'inici"
+ DEMO: "Demo"
+ BUG_TRACKER: "Rastrejador d'errors"
+ KEYWORDS: "Paraules clau"
+ LICENSE: "Llicència"
+ DESCRIPTION: "Descripció"
+ README: "Llegiu-me"
+ REMOVE_THEME: "Elimina tema"
+ INSTALL_THEME: "Instal·la tema"
+ THEME: "Tema"
+ BACK_TO_THEMES: "Torna a Temes"
+ BACK_TO_PLUGINS: "Torna a Plugins"
+ CHECK_FOR_UPDATES: "Cerca actualitzacions"
+ ADD: "Afegeix"
+ CLEAR_CACHE: "Neteja la memòria cache"
+ CLEAR_CACHE_ALL_CACHE: "Tota la cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Només assets"
+ CLEAR_CACHE_IMAGES_ONLY: "Només imatges"
+ CLEAR_CACHE_CACHE_ONLY: "Només cache"
+ CLEAR_CACHE_TMP_ONLY: "Només tmp"
+ DASHBOARD: "Panell de control"
+ UPDATES_AVAILABLE: "Hi ha actualizacions disponibles"
+ DAYS: "Dies"
+ UPDATE: "Actualitza"
+ BACKUP: "Còpia de seguretat"
+ STATISTICS: "Estadístiques"
+ TODAY: "Avui"
+ WEEK: "Setmana"
+ MONTH: "Mes"
+ LATEST_PAGE_UPDATES: "Últimes pàgines actualitzades"
+ MAINTENANCE: "Manteniment"
+ UPDATED: "Actualitzat"
+ MON: "Dl."
+ TUE: "Dt."
+ WED: "Dc."
+ THU: "Dj."
+ FRI: "Dv."
+ SAT: "Ds."
+ SUN: "Dg."
+ COPY: "Copia"
+ EDIT: "Edita"
+ CREATE: "Crea"
+ GRAV_ADMIN: "Administració Grav"
+ GRAV_OFFICIAL_PLUGIN: "Plugin oficial de Grav"
+ GRAV_OFFICIAL_THEME: "Tema oficial de Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Aquest plugin està lligat simbòlicament. Les actualitzacions no seran detectades."
+ THEME_SYMBOLICALLY_LINKED: "Aquest tema està lligat simbòlicament. Les actualitzacions no seran detectades"
+ REMOVE_PLUGIN: "Elimina plugin"
+ INSTALL_PLUGIN: "Instal·la plugin"
+ AVAILABLE: "Disponible"
+ INSTALLED: "Instal·lat"
+ INSTALL: "Instal·la"
+ ACTIVE_THEME: "Tema actiu"
+ SWITCHING_TO: "Canviant a"
+ SWITCHING_TO_DESCRIPTION: "Al canviar a un tema diferent, no es garanteix que tots els estils de pàgina siguin compatibles, potencialment, pot haver-hi errors al intentar carregar aquestes pàgines."
+ SWITCHING_TO_CONFIRMATION: "Vols continuar i canviar de tema"
+ CREATE_NEW_USER: "Crea nou usuari"
+ REMOVE_USER: "Elimina usuari"
+ ACCESS_DENIED: "Accés denegat"
+ ACCOUNT_NOT_ADMIN: "el teu compte no té permisos d'administrador"
+ PHP_INFO: "Informació PHP"
+ INSTALLER: "Instal·lador"
+ AVAILABLE_THEMES: "Temes disponibles"
+ AVAILABLE_PLUGINS: "Plugins disponibles"
+ INSTALLED_THEMES: "Temes instal·lats"
+ INSTALLED_PLUGINS: "Plugins instal·lats"
+ BROWSE_ERROR_LOGS: "Examina registres d'errors"
+ SITE: "Lloc web"
+ INFO: "Info"
+ SYSTEM: "Sistema"
+ USER: "Usuari"
+ ADD_ACCOUNT: "Afegeix compte"
+ SWITCH_LANGUAGE: "Canvia l'idioma"
+ SUCCESSFULLY_ENABLED_PLUGIN: "El plugin s'ha activat correctament"
+ SUCCESSFULLY_DISABLED_PLUGIN: "El plugin s'ha desactivat correctament"
+ SUCCESSFULLY_CHANGED_THEME: "S'ha canviat el tema per defecte correctament"
+ INSTALLATION_FAILED: "La instal·lació ha fallat"
+ INSTALLATION_SUCCESSFUL: "Instal·lació satisfactòria"
+ UNINSTALL_FAILED: "Desinstal·lació fallida"
+ UNINSTALL_SUCCESSFUL: "Desinstal·lació satisfactòria"
+ SUCCESSFULLY_SAVED: "Desat satisfactòriament"
+ SUCCESSFULLY_COPIED: "Copiat satisfactòriament"
+ REORDERING_WAS_SUCCESSFUL: "Reordenació satisfactòria"
+ SUCCESSFULLY_DELETED: "Eliminat satisfactòriament"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Idioma canviat satisfactòriament"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "No tens permisos suficients per a la tasca"
+ CACHE_CLEARED: "Memòria cache esborrada"
+ METHOD: "Mètode"
+ ERROR_CLEARING_CACHE: "Error al esborrar cache"
+ AN_ERROR_OCCURRED: "S'ha produït un error"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "La teva còpia de seguretat està llesta per a descarregar"
+ DOWNLOAD_BACKUP: "Descarrega còpia de seguretat"
+ PAGES_FILTERED: "Pàgines filtrades"
+ NO_PAGE_FOUND: "No s'han trobat pàgines"
+ INVALID_PARAMETERS: "Els paràmetres són invàlids"
+ NO_FILES_SENT: "No s'han enviat fitxers"
+ EXCEEDED_FILESIZE_LIMIT: "S'ha excedit el límit de tamany de fitxer de la configuració de PHP"
+ UNKNOWN_ERRORS: "Hi ha hagut errors desconeguts"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "S'ha excedit el límit de tamany de fitxer de la configuració de Grav"
+ UNSUPPORTED_FILE_TYPE: "Tipus de fitxer no suportat"
+ FAILED_TO_MOVE_UPLOADED_FILE: "S'ha fallat al moure el fitxer carregat."
+ FILE_UPLOADED_SUCCESSFULLY: "S'ha carregat el fitxer amb èxit"
+ FILE_DELETED: "S'ha esborrat el fitxer"
+ FILE_COULD_NOT_BE_DELETED: "No s'ha pogut esborrar el fitxer"
+ FILE_NOT_FOUND: "No s'ha trobat el fitxer"
+ NO_FILE_FOUND: "No s'han trobat fitxers"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav ha estat actualitzat amb èxit a"
+ GRAV_UPDATE_FAILED: "Ha fallat l'actualització de Grav"
+ EVERYTHING_UPDATED: "Tot està actualitzat"
+ UPDATES_FAILED: "Han fallat les actualitzacions"
+ AVATAR_BY: "Avatar per"
+ LAST_BACKUP: "Última còpia de seguretat"
+ FULL_NAME: "Nom complet"
+ USERNAME: "Nom d'usuari"
+ EMAIL: "Email"
+ USERNAME_EMAIL: "Nom d'usuari o correu electrònic"
+ PASSWORD: "Contrasenya"
+ PASSWORD_CONFIRM: "Confirma contrasenya"
+ TITLE: "Títol"
+ LANGUAGE: "Llengua"
+ ACCOUNT: "Compte d'usuari"
+ EMAIL_VALIDATION_MESSAGE: "Ha de ser una adreça de correu electrònic vàl·lida"
+ PASSWORD_VALIDATION_MESSAGE: "La contrasenya ha de contenir almenys un número i una lletra majúscula i minúscula, i almenys 8 o més caràcters"
+ LANGUAGE_HELP: "Estableix la llengua preferida"
+ MEDIA: "Mèdia"
+ DEFAULTS: "Per defecte"
+ SITE_TITLE: "Títol del lloc"
+ SITE_TITLE_PLACEHOLDER: "Títol a tot el lloc"
+ SITE_TITLE_HELP: "Títol per defecte pel teu lloc, sovint utilitzat en els temes"
+ SITE_DEFAULT_LANG: "Llenguatge per defecte"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Llenguatge per defecte per a ser utilitzat per l'etiqueta del tema "
+ SITE_DEFAULT_LANG_HELP: "Llenguatge per defecte per a ser utilitzat per l'etiqueta del tema "
+ DEFAULT_AUTHOR: "Autor/a per defecte"
+ DEFAULT_AUTHOR_HELP: "Un nom d'autor/a per defecte, algunes vegades utilitzat en temes o contingut de les pàgines"
+ DEFAULT_EMAIL: "Email per defecte"
+ DEFAULT_EMAIL_HELP: "Un correu electrònic per referenciar en temes o pàgines"
+ TAXONOMY_TYPES: "Tipus de taxonomia"
+ TAXONOMY_TYPES_HELP: "Els tipus de taxonomia han de definir-se aquí si es desitja utilitzar-les en pàgines"
+ PAGE_SUMMARY: "Resum de pàgina"
+ ENABLED: "Habilitat"
+ ENABLED_HELP: "Habilita resum de pàgina (el resum retorna el mateix que el contingut de la pàgina)"
+ 'YES': "Sí"
+ 'NO': "No"
+ SUMMARY_SIZE: "Mida del resum"
+ SUMMARY_SIZE_HELP: "La quantitat de caràcters d'una pàgina a utilitzar com a resum del contingut"
+ FORMAT: "Format"
+ FORMAT_HELP: "curt = utilitza la primera ocurrència del delimitador o mida; llarg = s'ignorarà el delimitador del resum"
+ SHORT: "Curt"
+ LONG: "Llarg"
+ DELIMITER: "Delimitador"
+ DELIMITER_HELP: "El delimitador de resum (per defecte '===')"
+ METADATA: "Metadades"
+ METADATA_HELP: "Valors de metadades per defecte que es mostraran a cada pàgina excepte si es sobreescriuen a la pàgina"
+ NAME: "Nom"
+ CONTENT: "Contingut"
+ REDIRECTS_AND_ROUTES: "Redireccions i rutes"
+ CUSTOM_REDIRECTS: "Redireccions personalitzades"
+ CUSTOM_REDIRECTS_HELP: "rutes per redirigir a altres pàgines. Substitució de Regex estàndard és vàl·lida"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/el/teu/àlies"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/la/teva/redirecció"
+ CUSTOM_ROUTES: "Rutes personalitzades"
+ CUSTOM_ROUTES_HELP: "rutes a àlies a altres pàgines. Substitució de Regex estàndard és vàl·lida"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/el/teu/àlies"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/la/teva/ruta"
+ FILE_STREAMS: "Streams de fitxers"
+ DEFAULT: "Per defecte"
+ PAGE_MEDIA: "Contingut multimèdia de la pàgina"
+ OPTIONS: "Opcions"
+ PUBLISHED: "Publicat"
+ PUBLISHED_HELP: "Per defect, una pàgina es publica excepte que estableixis explícitament 'published': false o posant una publish_date al futur o una unpublish_date al passat"
+ DATE: "Data"
+ DATE_HELP: "La variable data permet definir específicament una data associada a aquesta pàgina."
+ PUBLISHED_DATE: "Data de publicació"
+ PUBLISHED_DATE_HELP: "Pots proporcionar una data per provocar automàticament la publicació."
+ UNPUBLISHED_DATE: "Data de despublicació"
+ UNPUBLISHED_DATE_HELP: "Pots proporcionar una data per provocar automàticament la despublicació."
+ ROBOTS: "Robots"
+ TAXONOMIES: "Taxonomies"
+ TAXONOMY: "Taxonomia"
+ ADVANCED: "Avançat"
+ SETTINGS: "Configuració"
+ FOLDER_NUMERIC_PREFIX: "Prefix numèric carpeta"
+ FOLDER_NUMERIC_PREFIX_HELP: "Prefix numèric que proporciona ordenació manual i implica la visibilitat"
+ FOLDER_NAME: "Nom de la carpeta"
+ FOLDER_NAME_HELP: "El nom de carpeta que s'emmagatzemarà al sistema de fitxers per a aquesta pàgina"
+ PARENT: "Pare"
+ DEFAULT_OPTION_ROOT: "-Root-"
+ DEFAULT_OPTION_SELECT: "- selecciona -"
+ DISPLAY_TEMPLATE: "Plantilla a mostrar"
+ DISPLAY_TEMPLATE_HELP: "El tipus de pàgina que es tradueix a la plantilla de Twig en què es renderitza la pàgina"
+ BODY_CLASSES: "Classes del Body"
+ ORDERING: "Ordenació"
+ PAGE_ORDER: "Ordre de pàgines"
+ OVERRIDES: "Sobreescriu"
+ MENU: "Menú"
+ MENU_HELP: "El text a utilitzar en un menú. Si no s'estableix, s'utilitzarà el Títol."
+ SLUG: "Slug"
+ SLUG_HELP: "La variable slug permet definir específicament la part de l'URL que correspon a la pàgina"
+ SLUG_VALIDATE_MESSAGE: "L'slug ha de contenir només caràcters alfanumèrics en minúscules i guions"
+ PROCESS: "Processa"
+ PROCESS_HELP: "Control de com es processen les pàgines. Configurable per a pàgina enlloc de globalment"
+ DEFAULT_CHILD_TYPE: "Tipus de fill per defecte"
+ USE_GLOBAL: "Ús global"
+ ROUTABLE: "Accessible"
+ ROUTABLE_HELP: "Si aquesta pàgina és accessible des d'una URL"
+ CACHING: "Caching"
+ VISIBLE: "Visible"
+ VISIBLE_HELP: "Determina si una pàgina és visible en la navegació."
+ DISABLED: "Deshabilitat"
+ ITEMS: "Ítems"
+ ORDER_BY: "Ordena per"
+ ORDER: "Ordena"
+ FOLDER: "Carpeta"
+ ASCENDING: "Ascendent"
+ DESCENDING: "Descendent"
+ ADD_MODULAR_CONTENT: "Afegeix contingut modular"
+ PAGE_TITLE: "Títol de pàgina"
+ PAGE_TITLE_HELP: "El títol de la pàgina"
+ PAGE: "Pàgina"
+ MODULAR_TEMPLATE: "Plantilla modular"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Nom de fitxer"
+ PARENT_PAGE: "Pàgina pare"
+ HOME_PAGE: "Pàgina d'inici"
+ HOME_PAGE_HELP: "La pàgina que utilitzarà Grav com a destinació per defecte"
+ DEFAULT_THEME: "Tema per defecte"
+ DEFAULT_THEME_HELP: "Estableix el tema per defecte que utilitzarà Grav (per defecte és Antimatter)"
+ TIMEZONE: "Zona horària"
+ TIMEZONE_HELP: "Sobreescriu la zona horària del servidor"
+ SHORT_DATE_FORMAT: "Format de data curt"
+ SHORT_DATE_FORMAT_HELP: "Estableix el format de data curt que poden utilitzar els temes"
+ LONG_DATE_FORMAT: "Format de data llarg"
+ LONG_DATE_FORMAT_HELP: "Estableix el format de data llarg que poden utilitzar els temes"
+ DEFAULT_ORDERING: "Ordre per defecte"
+ DEFAULT_ORDERING_HELP: "Les pàgines de la llista seran generades utilitzant aquest ordre excepte que se sobreescrigui"
+ DEFAULT_ORDERING_DEFAULT: "Per defecte - basat en el nom de la carpeta"
+ DEFAULT_ORDERING_FOLDER: "Carpeta - basat en el nom de carpeta sense prefix"
+ DEFAULT_ORDERING_TITLE: "Títol - basat en el camp de títol de la capçalera"
+ DEFAULT_ORDERING_DATE: "Data - basat en el camp data de la capçalera"
+ DEFAULT_ORDER_DIRECTION: "Direcció d'ordre per defecte"
+ DEFAULT_ORDER_DIRECTION_HELP: "La direcció de les pàgines en una llista"
+ DEFAULT_PAGE_COUNT: "Compte de pàgina per defecte"
+ DEFAULT_PAGE_COUNT_HELP: "Nombre màxim de compte de pàgines en una llista"
+ DATE_BASED_PUBLISHING: "Publicació basada en la data"
+ DATE_BASED_PUBLISHING_HELP: "(Des)publicar automàticament posts basant-se en la seva data"
+ EVENTS: "Esdeveniments"
+ EVENTS_HELP: "Habilita o inhabilita esdeveniments concrets. Deshabilitant-los pot trencar plugins"
+ REDIRECT_DEFAULT_ROUTE: "Ruta de redirecció per defecte"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Redirigir automàticament a la ruta per defecte d'una pàgina"
+ LANGUAGES: "Idiomes"
+ SUPPORTED: "Suportat"
+ SUPPORTED_HELP: "Llista separada per comes de codis d'idioma de 2 lletres (per exemple 'en,fr,de')"
+ TRANSLATIONS_ENABLED: "Traduccions habilitades"
+ TRANSLATIONS_ENABLED_HELP: "Suport a traduccions a Grav, plugins i extensions"
+ TRANSLATIONS_FALLBACK: "Fallback de traduccions"
+ TRANSLATIONS_FALLBACK_HELP: "Fallback en traduccions suportades si l'idioma actiu no existeix"
+ ACTIVE_LANGUAGE_IN_SESSION: "Idioma actiu a la sessió"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Emmagatzema l'idioma actiu a la sessió"
+ HTTP_HEADERS: "Capçaleres HTTP"
+ EXPIRES: "Caduca"
+ EXPIRES_HELP: "Estableix la capçalera d'expiració. El valor és en segons."
+ LAST_MODIFIED: "Darrera modificació"
+ LAST_MODIFIED_HELP: "Estableix la capçalera de darrera modificació que pot optimitzar el proxy i la cache del navegador"
+ ETAG: "ETag"
+ ETAG_HELP: "Estableix la capçalera d'etag per ajudar a identificar quan una pàgina ha estat modificada"
+ VARY_ACCEPT_ENCODING: "Variar accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Estableix la capçalera 'Vary: Accept Encoding' per ajudar amb el proxy i la cache CDN"
+ MARKDOWN_EXTRA_HELP: "Habilita suport per defecte per a Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ AUTO_LINE_BREAKS: "Salts de línia automàtics"
+ AUTO_LINE_BREAKS_HELP: "Habilita el suport per a salts de línia automàtics a Markdown"
+ AUTO_URL_LINKS: "Enllaços URL automàtics"
+ AUTO_URL_LINKS_HELP: "Habilita l'autoconversió d'URLs a hyperlinks HTML"
+ ESCAPE_MARKUP: "Escape markup"
+ ESCAPE_MARKUP_HELP: "Escape markup tags en entitats HTML"
+ CACHING_HELP: "Interruptor ON/OFF global per habilitar/deshabilitar cache de Grav"
+ CACHE_CHECK_METHOD: "Mètode de verificació de cache"
+ CACHE_CHECK_METHOD_HELP: "Seleccionar el mètode que utilitza Grav per comprovar si s'han modificat arxius de pàgina."
+ CACHE_DRIVER: "Contolador de cache"
+ CACHE_DRIVER_HELP: "Selecciona quin controlador de cache de Grav cal usar. 'Auto Detect' intenta trobar el millor per a tu"
+ CACHE_PREFIX: "Prefix de cache"
+ CACHE_PREFIX_HELP: "Un identificador per part de la clau de Grav. No la canviïs excepte que sàpigues el que estàs fent."
+ CACHE_PREFIX_PLACEHOLDER: "Derivat de l'URL base (sobreescriu introduint strings aleatòris)"
+ LIFETIME: "Cicle de vida"
+ LIFETIME_HELP: "Defineix el cicle de vida de la cache en segons. 0 = infinit"
+ GZIP_COMPRESSION: "Compressió gzip"
+ GZIP_COMPRESSION_HELP: "Habilita la compressió GZip de la pàgina de Grav per augmentar el rendiment."
+ TWIG_TEMPLATING: "Plantilles de Twig"
+ TWIG_CACHING: "Cache de Twig"
+ TWIG_CACHING_HELP: "Controla el mecanisme de cache de Twig. Deixa'l habilitat per a millor rendiment."
+ TWIG_DEBUG: "Depuració de Twig"
+ TWIG_DEBUG_HELP: "Permet l'opció de no carregar l'extensió de depuració de Twig"
+ DETECT_CHANGES: "Detectar canvis"
+ DETECT_CHANGES_HELP: "Twig recompilarà automàticament la cache de Twig si detecta canvis a les plantilles de Twig"
+ AUTOESCAPE_VARIABLES: "Variables d'autoescape"
+ AUTOESCAPE_VARIABLES_HELP: "Autoescapa totes les variables. Això probablement trencarà el teu lloc"
+ ASSETS: "Assets"
+ CSS_PIPELINE: "CSS pipeline"
+ CSS_PIPELINE_HELP: "El CSS pipeline és l'unificació de diversos recursos CSS en un sol fitxer"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Inclou fitxers externs en el CSS pipeline"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "A vegades, algunes URLs externes tenen referències relatives de fitxer i no s'hi hauria de fer pipelining"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Processar pimer el CSS pipeline"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Intrepreta el CSS pipeline abans de qualsevol altra referència CSS que no estigui inclosa"
+ CSS_MINIFY: "Minifica CSS"
+ CSS_MINIFY_HELP: "Minifica el CSS durant el pipelining"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "Sobreesciu la minificació de CSS a Windows"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Sobreescriu la minificació en plataformes Windows. Fals per defecte degut a ThreadStackSize"
+ CSS_REWRITE: "Reescriptura CSS"
+ CSS_REWRITE_HELP: "Reescriu qualsevol URL relativa de CSS durant el pipelining"
+ JAVASCRIPT_PIPELINE: "JavaScript pipeline"
+ JAVASCRIPT_PIPELINE_HELP: "El JS pipeline és l'unificació de diversos recursos JS en un sol fitxer"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Inclou fitxers externs en el JS pipeline"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "A vegades, les URLs externes tenen referències d'arxiu i no s'hi hauria de fer pipelining"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Interpreta primer el JS pipeline"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Interpreta el JS pipeline abans de qualsevol altra referència JS que no estigui inclosa"
+ JAVASCRIPT_MINIFY: "Minificació JavaScript"
+ JAVASCRIPT_MINIFY_HELP: "Minifica el JS durant el pipelining"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Habilita les marques de temps als assets"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Habilita les marques de temps a assets"
+ COLLECTIONS: "Col·leccions"
+ ERROR_HANDLER: "Controlador d'errors"
+ DISPLAY_ERRORS: "Mostra errors"
+ DISPLAY_ERRORS_HELP: "Mostra pàgina d'error full backstrace-style"
+ LOG_ERRORS: "Registre d'errors"
+ LOG_ERRORS_HELP: "Registre d'errors a la carpeta /logs"
+ DEBUGGER: "Depurador"
+ DEBUGGER_HELP: "Habilita depurador de Grav i les configuracions següents"
+ DEBUG_TWIG: "Depuració de Twig"
+ DEBUG_TWIG_HELP: "Habilita la depuració de plantilles de Twig"
+ SHUTDOWN_CLOSE_CONNECTION: "Al apagar tanca la connexió"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Tanca la connexió abans de cridar onShutdown(). False per a la depuració"
+ DEFAULT_IMAGE_QUALITY: "Qualitat d'imatge per defecte"
+ DEFAULT_IMAGE_QUALITY_HELP: "Qualitat d'imatge per defecte per a ser utilitzada quan es remostri o es guardi a cache les imatges (85%)"
+ CACHE_ALL: "Guardar totes les imatges a cache"
+ CACHE_ALL_HELP: "Guarda totes les imatges al sistema cache de Grav fins i tot si no tenen cap manipulació de mèdia"
+ IMAGES_DEBUG: "Marca d'aigua de depuració"
+ IMAGES_DEBUG_HELP: "Mostra un overlay sobre les imatges indicant la profunditat de píxels quan es treballa amb retina, per exemple"
+ UPLOAD_LIMIT: "Límit de tamany de fitxer"
+ UPLOAD_LIMIT_HELP: "Defineix el tamany màxim de càrrega en bytes (0 = il·limitat)"
+ ENABLE_MEDIA_TIMESTAMP: "Permet timestamps en fitxers multimèdia"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Afegeix un timestamp basat en la data d'última modificació a cada element multimèdia"
+ SESSION: "Sessió"
+ SESSION_ENABLED_HELP: "Habilita suport de sessions a Grav"
+ TIMEOUT: "Temps d'espera"
+ TIMEOUT_HELP: "Estableix el temps d'espera de la sessió en segons"
+ SESSION_NAME_HELP: "Un identificador usat per formar el nom de la galeta de sessió"
+ ABSOLUTE_URLS: "URLs absolutes"
+ ABSOLUTE_URLS_HELP: "URLs absolutes o relatives per a 'base_url'"
+ PARAMETER_SEPARATOR: "Separador de paràmetres"
+ PARAMETER_SEPARATOR_HELP: "Separador per a paràmetres passats que es poden canviar d'Apache a Windows"
+ TASK_COMPLETED: "Tasca completada"
+ EVERYTHING_UP_TO_DATE: "Tot està actualitzat"
+ UPDATES_ARE_AVAILABLE: "hi ha actualitzacions disponibles"
+ IS_AVAILABLE_FOR_UPDATE: "està disponible per a l'actualització"
+ IS_NOW_AVAILABLE: "ja està disponible"
+ CURRENT: "Actual"
+ UPDATE_GRAV_NOW: "Actualitza Grav ara"
+ GRAV_SYMBOLICALLY_LINKED: "Grav està lligat simbòlicament. Les actualitzacions no estaran disponibles"
+ UPDATING_PLEASE_WAIT: "Actualitzant... descarregant, espera sisplau"
+ OF_THIS: "d'aquest/a"
+ OF_YOUR: "del teu"
+ HAVE_AN_UPDATE_AVAILABLE: "té disponible una actualització"
+ SAVE_AS: "Desa com a"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Esteu segur que voleu suprimir aquesta pàgina i tots els seus fills? Si la pàgina es tradueix en altres llengües, les traduccions es mantindran i han de ser esborrades per separat. En cas contrari la carpeta de la pàgina serà eliminada juntament amb les seves subpàgines. Aquesta acció no es pot desfer."
+ AND: "i"
+ UPDATE_AVAILABLE: "Actualització disponible"
+ METADATA_KEY: "Clau (p. ex. 'paraules clau')"
+ METADATA_VALUE: "Valor (per exemple, \"Blog, Grav\")"
+ USERNAME_HELP: "El nom d'usuari ha de tenir entre 3 i 16 caràcters, incloent minúscules, números, guions i guions baixos. Lletres majúscules, espais i caràcters especials no estan permesos"
+ FULLY_UPDATED: "Completament actualitzat"
+ SAVE_LOCATION: "Desa a la ubicació"
+ PAGE_FILE: "Plantilla de pàgina"
+ PAGE_FILE_HELP: "Nom d'arxiu de la plantilla de pàgina i plantilla de visualització per defecte"
+ NO_USER_ACCOUNTS: "No s'han trobat comptes d'usuari, sisplau crea'n una..."
+ REDIRECT_TRAILING_SLASH: "Redirigeix barra final"
+ REDIRECT_TRAILING_SLASH_HELP: "Realitza una redirecció 301 en lloc de manteniment transparent de barra final."
+ DEFAULT_DATE_FORMAT: "Format de data de pàgina"
+ DEFAULT_DATE_FORMAT_HELP: "Format de data de pàgina utilitzat per Grav. Per defecte, Grav intenta endivinar el format de data, tot i això pots especificar un format utilitzant la sintaxi de data de PHP (p.e., Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Endevina automàticament"
+ IGNORE_FILES: "Ignora fitxers"
+ IGNORE_FILES_HELP: "Arxius específics a ignorar al processar pàgines"
+ IGNORE_FOLDERS: "Ignora carpetes"
+ IGNORE_FOLDERS_HELP: "Carpetes específiques a ignorar al processar pàgines"
+ HTTP_ACCEPT_LANGUAGE: "Estableix la llengua a partir del navegador"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Pots optar per intentar establir la llengua basant-se en l'etiqueta de la capçalera 'http_accept_language' en el navegador"
+ OVERRIDE_LOCALE: "Sobreescriu la configuració local"
+ OVERRIDE_LOCALE_HELP: "Sobreescriu la configuració local en PHP basant-se en la llengua actual"
+ REDIRECT: "Redirecció de pàgina"
+ REDIRECT_HELP: "Escriu una ruta de pàgina o URL externa per aqueta pàgina a redirigir a per exemple, '/alguna/ruta' o 'https://algunlloc.com'"
+ PLUGIN_STATUS: "Estat del plugin"
+ INCLUDE_DEFAULT_LANG: "Inclou llengua predeterminada"
+ INCLUDE_DEFAULT_LANG_HELP: "Això sobreposarà totes les URLs amb la llengua per defecte. Per exemple, 'ca/blog/el-meu-post'"
+ ALLOW_URL_TAXONOMY_FILTERS: "Filtres de taxonomia d'URL"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Col·lecions basades en pàgines que et permeten filtrar per '/taxonomia:valor'."
+ REDIRECT_DEFAULT_CODE: "Codi de redirecció per defecte"
+ REDIRECT_DEFAULT_CODE_HELP: "El codi d'estat HTTP per utilitzar en redireccions"
+ IGNORE_HIDDEN: "Ignora ocults"
+ IGNORE_HIDDEN_HELP: "Ignora tots els fitxers i carpetes que comencin amb un punt"
+ WRAPPED_SITE: "Lloc encapsulat"
+ WRAPPED_SITE_HELP: "Per a que els temes/plugins sàpiguen si Grav està encapsulat en una altra plataforma"
+ FALLBACK_TYPES: "Tipus de fallback permesos"
+ FALLBACK_TYPES_HELP: "Tipus de fitxers permesos que es poden trobar si s'accedeix per la ruta de la pàgina. Per defecte, qualsevol tipus de mèdia compatible."
+ INLINE_TYPES: "Tipus de fallback en línia"
+ INLINE_TYPES_HELP: "Una llista de tipus d'arxius que han de ser mostrats en línia enlloc de descarregats"
+ APPEND_URL_EXT: "Afegeix extensió de direcció URL"
+ APPEND_URL_EXT_HELP: "Afegirà una extensió personalitzarà a l'URL de la pàgina. Tingues en compte que això farà que Grav busqui la plantilla ''..twig'"
+ PAGE_MODES: "Modes de pàgina"
+ PAGE_TYPES: "Tipus de pàgina"
+ ACCESS_LEVELS: "Nivells d'accés"
+ GROUPS: "Grups"
+ GROUPS_HELP: "Llista de grups dels quals l'usuari en forma part"
+ ADMIN_ACCESS: "Accés d'administrador"
+ SITE_ACCESS: "Accés al lloc"
+ INVALID_SECURITY_TOKEN: "Clau de seguretat invàl·lida"
+ ACTIVATE: "Activa"
+ TWIG_UMASK_FIX: "Corregeix Umask"
+ TWIG_UMASK_FIX_HELP: "Per defecte Twig crea arxius cache com a 0755, la correcció ho canvia a 0775"
+ CACHE_PERMS: "Permisos de cache"
+ CACHE_PERMS_HELP: "Permisos de carpeta de cache per defecte. Normalment 0755 o 0775 segons la configuració"
+ REMOVE_SUCCESSFUL: "Eliminació amb èxit"
+ REMOVE_FAILED: "No s'ha pogut eliminar"
+ HIDE_HOME_IN_URLS: "Amaga ruta de la pàgina inicial en les URLs"
+ HIDE_HOME_IN_URLS_HELP: "S'assegurarà que les rutes per defecte de qualsevol pàgina sota la pàgina inicial no facin referència a la ruta regular de la pàgina inicial"
+ TWIG_FIRST: "Processa Twig primer"
+ TWIG_FIRST_HELP: "Si el processament de pàgina de Twig està habilitat, es pot configurar que Twig faci el processament després de markdown"
+ SESSION_SECURE: "Segur"
+ SESSION_SECURE_HELP: "Si és cert, indica que la comunicació per aquesta cookie ha de ser sobre una connexió encriptada. ALERTA: Habilita aquesta opicó en llocs que funcionen exclusivament en HTTPS"
+ SESSION_HTTPONLY: "Només HTTP"
+ SESSION_HTTPONLY_HELP: "Si és cert, indica que les cookies hauran de ser utilitzades només sobre HTTP, i les modificacions de JavaScript no estan permeses"
+ REVERSE_PROXY: "Proxy invers"
+ REVERSE_PROXY_HELP: "Habilita-ho si estàs darrere d'un proxy invers i tens problemes amb URLs que continguin ports incorrectes"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmatter invàlid, no s'ha pogut desar"
+ ADD_FOLDER: "Afegeix carpeta"
+ PROXY_URL: "URL del proxy"
+ PROXY_URL_HELP: "Escriu el HOST proxy o IP i PORt"
+ NOTHING_TO_SAVE: "Res a desar"
+ FILE_ERROR_ADD: "S'ha produït un error mentre s'intentava afegir el fitxer"
+ FILE_ERROR_UPLOAD: "S'ha produït un error mentre s'intentava carregar el fitxer"
+ FILE_UNSUPPORTED: "Tipus de fitxer no suportat"
+ ADD_ITEM: "Afegeix ítem"
+ FILE_TOO_LARGE: "El fitxers és massa gran per carregar-se, el màxim permès és %s segons la teva configuració PHP. Incrementa la opció PHP 'post_max_size'"
+ INSTALLING: "Instal·lant"
+ LOADING: "Carregant..."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Les següents dependències han de ser cobertes primer:"
+ ERROR_INSTALLING_PACKAGES: "S'ha produït un error mentre s'instal·lava el(s) paquet(s)"
+ INSTALLING_DEPENDENCIES: "Instal·lant dependències..."
+ INSTALLING_PACKAGES: "Instal·lant paquet(s)..."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Paquet(s) instal·lat(s) correctament."
+ READY_TO_INSTALL_PACKAGES: "Preparat per instal·lar el(s) paquet(s)"
+ PACKAGES_NOT_INSTALLED: "No s'han instal·lat els paquets"
+ PACKAGES_NEED_UPDATE: "Els paquets ja estaven instal·lats, però eren massa antics"
+ PACKAGES_SUGGESTED_UPDATE: "Els paquets ja estaven instal·lats, i la versió està bé, però s'actualitzaran per tal d'estar al dia"
+ REMOVE_THE: "Elimina el %s"
+ CONFIRM_REMOVAL: "Estàs segur que vols eliminar aquest %s?"
+ REMOVED_SUCCESSFULLY: "S'ha eliminat %s correctament"
+ ERROR_REMOVING_THE: "S'ha produït un error eliminant el %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "El %s requeria les següents dependències, les quals no són requerides per cap altre paquet instal·lat. Si no les estàs utilitzant, les pots eliminar directament des d'aquí."
+ READY_TO_UPDATE_PACKAGES: "Preparat per actualizar el(s) paquet(s)"
+ ERROR_UPDATING_PACKAGES: "S'ha produït un error al actualitzar el(s) paquet(s)"
+ UPDATING_PACKAGES: "Actualitzant paquet(s)..."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Paquet(s) actualitzat(s) correctament."
+ UPDATING: "Actualitzant"
+ GPM_RELEASES: "Versions GPM"
+ GPM_RELEASES_HELP: "Escull 'Provant' per instal·lar versions beta o en proves"
+ GPM_METHOD: "Mètode de recuperació remota"
+ GPM_METHOD_HELP: "Quan es posa a Automàtic, Grav determinarà si fopen està disponible i l'utilitzarà, d'altra forma s'utilitzarà cURL. Per a forçar l'ús d'un o altre, canvia la configuració."
+ GPM_VERIFY_PEER: "Verificació a distància de peer (SSL)"
+ GPM_VERIFY_PEER_HELP: "Alguns proveïdors semblen fallar en la verificació del certificat SSL de getgrav.org, el qual causa que GPM no funcioni. Si aquest és el teu cas, desactivar aquesta configuració pot ajudar"
+ AUTO: "Automàtic"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Estable"
+ TESTING: "Provant"
+ FRONTMATTER_PROCESS_TWIG: "Processa frontmatter de Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Quan està habilitat, pots utilitzar les variables de configuració de Twig a la frontmatter de pàgina"
+ FRONTMATTER_IGNORE_FIELDS: "Ignora camps frontmatter"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Certs camps de frontmatter poden contenir Twig però no han de ser processats, com ara els formularis"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Paquet %s instal·lat correctament"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "L'ordre està definit pel pare, l'ordenament està deshabilitat"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "La pàgina no és visible, l'ordenament està deshabilitat"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "L'ordre a través de l'administrador no està suportat degut a que hi ha més de 200 elements"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "NOTA: No es poden afegir fitxers multimèdia fins que no s'hagi desat la pàgina. Fes clic a 'Desa' a la part superior"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "NOTA: Cal desar la pàgina haver de pujar-hi fitxers."
+ DROP_FILES_HERE_TO_UPLOAD: "Deixa anar els teus arxius aquí o fes clic en aquesta àrea"
+ INSERT: "Inserta"
+ UNDO: "Desfés"
+ REDO: "Refés"
+ HEADERS: "Capçaleres"
+ BOLD: "Negreta"
+ ITALIC: "Cursiva"
+ STRIKETHROUGH: "Tatxat"
+ SUMMARY_DELIMITER: "Delimitador del resum"
+ LINK: "Enllaç"
+ IMAGE: "Imatge"
+ BLOCKQUOTE: "Citació"
+ UNORDERED_LIST: "Llista sense ordre"
+ ORDERED_LIST: "Llista ordenada"
+ EDITOR: "Editor"
+ PREVIEW: "Vista prèvia"
+ FULLSCREEN: "Pantalla completa"
+ MODULAR: "Modular"
+ NON_ROUTABLE: "No accessible"
+ NON_MODULAR: "No modular"
+ NON_VISIBLE: "No visible"
+ NON_PUBLISHED: "No publicat"
+ CHARACTERS: "caràcters"
+ PUBLISHING: "Publicació"
+ NOTIFICATIONS: "Notificacions"
+ MEDIA_TYPES: "Tipus de multimèdia"
+ IMAGE_OPTIONS: "Opcions d'imatge"
+ MIME_TYPE: "Tipus Mime"
+ THUMB: "Miniatura"
+ TYPE: "Tipus"
+ FILE_EXTENSION: "Extensió de fitxer"
+ LEGEND: "Llegenda de pàgina"
+ MEMCACHE_SERVER: "Servidor Memcache"
+ MEMCACHE_SERVER_HELP: "L'adreça del servidor Memcache"
+ MEMCACHE_PORT: "Port Memcache"
+ MEMCACHE_PORT_HELP: "El port del servidor Memcache"
+ MEMCACHED_SERVER: "Servidor Memcached"
+ MEMCACHED_SERVER_HELP: "L'adreça del servidor Memcached"
+ MEMCACHED_PORT: "Port Memcached"
+ MEMCACHED_PORT_HELP: "El port del servidor Memcached"
+ REDIS_SERVER: "Servidor de Redis"
+ REDIS_SERVER_HELP: "L'adreça del servidor de Redis"
+ REDIS_PORT: "Port Redis"
+ REDIS_PORT_HELP: "El port del servidor Redis"
+ ALL: "Tot"
+ FROM: "de"
+ TO: "a"
+ RELEASE_DATE: "Data de llançament"
+ SORT_BY: "Ordena per"
+ RESOURCE_FILTER: "Filtrar..."
+ FORCE_SSL: "Força SSL"
+ FORCE_SSL_HELP: "Força SSL globalment, si està habilitat, quan el lloc web és accedir per HTTP, Grav envia un redireccionament a la pàgina HTTPS"
+ NEWS_FEED: "Canal de notícies"
+ EXTERNAL_URL: "URL externa"
+ SESSION_PATH: "El camí de la sessió"
+ SESSION_PATH_HELP: "Utilitza només si has escollit una URL base personalitzada (has reescrit el domini del lloc web/subcarpeta)"
+ CUSTOM_BASE_URL: "URL base personalitzada"
+ CUSTOM_BASE_URL_HELP: "Utilitza si vols reescriure el domini del lloc web o utilitzar una subcarpeta diferent que la que utilitza Grav. Per exemple: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'No es pot utilitzar "%s" fora de les pàgines.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'No es pot pujar el fitxer %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'No es pot moure el fitxer %s to "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Cancel·la càrrega'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Estàs segur que vols cancel·lar aquesta càrrega?'
+ DROPZONE_DEFAULT_MESSAGE: 'Deixa anar els teus fitxers aquí o fes clic en aquesta àrea'
+ DROPZONE_FALLBACK_MESSAGE: 'El teu navegador no suporta arrosegar i deixar anar per a carregar fitxers.'
+ DROPZONE_FALLBACK_TEXT: 'Si us plau, utilitza el formulari clàssic inferior per carregar els teus fitxers com es feia abans.'
+ DROPZONE_FILE_TOO_BIG: 'El fitxer és molt gran ({{filesize}}MiB). Mida màxima de fitxer: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "No pots carregar fitxers d'aquest tipus."
+ DROPZONE_MAX_FILES_EXCEEDED: "No pots carregar més fitxers."
+ DROPZONE_REMOVE_FILE: "Esborra fitxer"
+ DROPZONE_RESPONSE_ERROR: "El servidor ha respost amb el codi {{statusCode}}."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Habilita el cache de l'administració"
+ ADMIN_CACHING_HELP: "El cache a l'administració pot ser controlat independentment del de la pàgina front-end"
+ DESTINATION_NOT_SPECIFIED: "Destinació no especificat"
+ UPLOAD_ERR_NO_TMP_DIR: "No es troba una carpeta temporal"
+ SESSION_SPLIT: "Separació de sessió"
+ SESSION_SPLIT_HELP: "Separació de sessions independent entre el lloc web i altres plugins (com ara l'administració)"
+ ERROR_FULL_BACKTRACE: "Error Complert Backtrace"
+ ERROR_SIMPLE: "Error simple"
+ ERROR_SYSTEM: "Error del sistema"
+ IMAGES_AUTO_FIX_ORIENTATION: "Fixar l'orientació automàtica"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Corregir automàticament l'orientació de la imatge basada en les dades Exif"
+ REDIS_SOCKET: "Socket Redis"
+ REDIS_SOCKET_HELP: "El Socket Redis"
+ NOT_SET: "No establert"
+ PERMISSIONS: "Permisos"
+ ALLOW_WEBSERVER_GZIP: "Permetre WebServer Gzip"
+ OFFLINE_WARNING: "La connexió a la GPM no es pot establir"
+ CONFIRM_REINSTALL: "Segur que vols re-instal·lar %s?"
+ REINSTALLED_SUCCESSFULLY: "%s re-instal·lat correctament"
+ TOOLS: "Eines"
+ GPM_OFFICIAL_ONLY: "Només GPM oficial"
+ SORTABLE_PAGES: "Pàgines ordenables:"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Ordre de visualització de descendents"
+ PWD_PLACEHOLDER: "cadena complexa de al menys 8 caràcters"
+ PWD_REGEX: "Regex clau"
+ USERNAME_REGEX: "RegEx nom d'usuari"
diff --git a/user/plugins/admin/languages/cs.yaml b/user/plugins/admin/languages/cs.yaml
new file mode 100644
index 0000000..69922fb
--- /dev/null
+++ b/user/plugins/admin/languages/cs.yaml
@@ -0,0 +1,819 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Jedná se o beta verzi! V ostrém provozu používejte pouze na vlastní nebezpečí..."
+ ADMIN_REPORT_ISSUE: "Objevili jste problém? Nahlaste ho, prosím, na GitHub."
+ EMAIL_FOOTER: "Beží na Grav CMS - Moderní správce obsahu pomocí souborů prostých textů"
+ LOGIN_BTN: "Přihlásit"
+ LOGIN_BTN_FORGOT: "Obnovit heslo"
+ LOGIN_BTN_RESET: "Obnovit heslo"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Odeslány pokyny pro obnovu hesla"
+ LOGIN_BTN_CLEAR: "Vymazat formulář"
+ LOGIN_BTN_CREATE_USER: "Vytvořit uživatele"
+ LOGIN_LOGGED_IN: "Byli jste úspěšně přihlášeni"
+ LOGIN_FAILED: "Přihlášení se nezdařilo"
+ LOGGED_OUT: "Byli jste odhlášeni"
+ RESET_NEW_PASSWORD: "Prosím, zadejte nové heslo …"
+ RESET_LINK_EXPIRED: "Odkaz pro obnovení hesla vypršel, zkuste to, prosím, znovu"
+ RESET_PASSWORD_RESET: "Heslo bylo změněno"
+ RESET_INVALID_LINK: "Použit neplatný odkaz pro obnovu hesla, zkuste to, prosím, znovu"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Pokyny pro obnovení hesla byly odeslány na vaši e-mailovou adresu"
+ FORGOT_FAILED_TO_EMAIL: "Nepodařilo se odeslat instrukce pro obnovu hesla, zkuste to, prosím, později"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Heslo pro %s nelze obnovit, není zadána e-mailová adresa"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Uživatel %s neexistuje"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Heslo nelze obnovit. Tento web nemá nastaveno odesílání e-mailů"
+ FORGOT_EMAIL_SUBJECT: "%s Požadavek na obnovení hesla"
+ FORGOT_EMAIL_BODY: "
Alternativt kan du indsætte flg. URL i din browsers adressebjælke:
%2$s
Venlig hilsen,
%3$s
"
+ MANAGE_PAGES: "Administrer sider"
+ CONFIGURATION: "Opsætning"
+ PAGES: "Sider"
+ PLUGINS: "Plugins"
+ PLUGIN: "Plugin"
+ THEMES: "Temaer"
+ LOGOUT: "Logud"
+ BACK: "Tilbage"
+ NEXT: "Næste"
+ PREVIOUS: "Foregående"
+ ADD_PAGE: "Tilføj side"
+ ADD_MODULAR: "Tilføj modulær"
+ MOVE: "Flyt"
+ DELETE: "Slet"
+ UNSET: "Ikke-indstillet"
+ VIEW: "Se"
+ SAVE: "Gem"
+ NORMAL: "Normal"
+ EXPERT: "Ekspert"
+ EXPAND_ALL: "Udfold alle"
+ COLLAPSE_ALL: "Sammenfold alle"
+ ERROR: "Fejl"
+ CLOSE: "Luk"
+ CANCEL: "Annullér"
+ CONTINUE: "Fortsæt"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Bekræftelse kræves"
+ MODAL_CHANGED_DETECTED_TITLE: "Ændringer registreret"
+ MODAL_CHANGED_DETECTED_DESC: "Ændringer er ikke gemt. Sikker på, at du vil fortsætte uden at gemme?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Bekræftelse kræves"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Sikker på, at du vil slette denne fil? Handlingen kan ikke fortrydes."
+ ADD_FILTERS: "Tilføj filtre"
+ SEARCH_PAGES: "Søg efter sider"
+ VERSION: "Version"
+ WAS_MADE_WITH: "Blev lavet med"
+ BY: "Af"
+ UPDATE_THEME: "Opdatere tema"
+ UPDATE_PLUGIN: "Opdater Plugin"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "af dette tema er nu tilgængelig"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "af dette plugin er nu tilgængelig"
+ AUTHOR: "Forfatter"
+ HOMEPAGE: "Websted"
+ DEMO: "Demo"
+ BUG_TRACKER: "Sporing af fejl"
+ KEYWORDS: "Nøgleord"
+ LICENSE: "Licens"
+ DESCRIPTION: "Beskrivelse"
+ README: "Læs-mig"
+ REMOVE_THEME: "Fjern Tema"
+ INSTALL_THEME: "Installer Tema"
+ THEME: "Tema"
+ BACK_TO_THEMES: "Tilbage til Temaer"
+ BACK_TO_PLUGINS: "Tilbage til Plugins"
+ CHECK_FOR_UPDATES: "Søg efter Opdateringer"
+ ADD: "Tilføj"
+ CLEAR_CACHE: "Ryd Cache"
+ CLEAR_CACHE_ALL_CACHE: "Alle Caches"
+ CLEAR_CACHE_ASSETS_ONLY: "Kun Aktiver"
+ CLEAR_CACHE_IMAGES_ONLY: "Kun Billeder"
+ CLEAR_CACHE_CACHE_ONLY: "Kun Cache"
+ CLEAR_CACHE_TMP_ONLY: "Kun tmp"
+ DASHBOARD: "Kontrolpanel"
+ UPDATES_AVAILABLE: "Opdateringer tilgængelige"
+ DAYS: "Dage"
+ UPDATE: "Opdatér"
+ BACKUP: "Backup"
+ BACKUPS: "Sikkerhedskopier"
+ BACKUP_NOW: "Sikkerhedskopiér nu"
+ BACKUPS_STATS: "Sikkerhedskopieringsstatistik"
+ BACKUPS_HISTORY: "Sikkerhedskopieringshistorik"
+ BACKUPS_PURGE_CONFIG: "Opsætning, Sikkerhedskopieringsrensning"
+ BACKUPS_PROFILES: "Sikkerhedskopieringsprofiler"
+ BACKUPS_COUNT: "Antal Sikkerhedskopier"
+ BACKUPS_PROFILES_COUNT: "Antal Profiler"
+ BACKUPS_TOTAL_SIZE: "Forbrugt lagerplads"
+ BACKUPS_NEWEST: "Seneste sikkerhedskopi"
+ BACKUPS_OLDEST: "Ældste sikkerhedskopi"
+ BACKUPS_PURGE: "Rense"
+ BACKUPS_NOT_GENERATED: "Ingen sikkerhedskopier oprettet endnu..."
+ BACKUPS_PURGE_NUMBER: "Benytter %s af %s sikkerhedskopipladser"
+ BACKUPS_PURGE_TIME: "%s dages sikkerhedskopiering resterer"
+ BACKUPS_PURGE_SPACE: "Benytter %s af %s"
+ BACKUP_DELETED: "Sikkerhedskopi blev slettet"
+ BACKUP_NOT_FOUND: "Sikkerhedskopi ikke fundet"
+ BACKUP_DATE: "Sikkerhedskopieringsdato"
+ STATISTICS: "Statistikker"
+ TODAY: "I dag"
+ WEEK: "Uge"
+ MONTH: "Måned"
+ LATEST_PAGE_UPDATES: "Seneste Sideopdateringer"
+ MAINTENANCE: "Vedligeholdelse"
+ UPDATED: "Opdateret"
+ MON: "Man"
+ TUE: "Tirs"
+ WED: "Ons"
+ THU: "Tor"
+ FRI: "Fre"
+ SAT: "Lør"
+ SUN: "Søn"
+ COPY: "Kopiér"
+ EDIT: "Redigér"
+ CREATE: "Opret"
+ GRAV_ADMIN: "Grav Admin"
+ GRAV_OFFICIAL_PLUGIN: "Grav Officielt Plugin"
+ GRAV_OFFICIAL_THEME: "Grav Officielt Tema"
+ PLUGIN_SYMBOLICALLY_LINKED: "Dette plugin er symbolsk linket. Ændringer opdages ikke."
+ THEME_SYMBOLICALLY_LINKED: "Dette tema er symbolsk linket. Ændringer opdaget ikke"
+ REMOVE_PLUGIN: "Fjern Plugin"
+ INSTALL_PLUGIN: "Installér Plugin"
+ AVAILABLE: "Tilgængelig"
+ INSTALLED: "Installeret"
+ INSTALL: "Installér"
+ ACTIVE_THEME: "Aktivt tema"
+ SWITCHING_TO: "Skifte til"
+ SWITCHING_TO_DESCRIPTION: "Der er ingen garanti for, at alle layoutsider understøttes ved skift til andet tema, hvilket potentielt kan forårsage fejl under indlæsning af nævnte sider."
+ SWITCHING_TO_CONFIRMATION: "Vil du forsætte og skifte til temaet"
+ CREATE_NEW_USER: "Opret ny bruger"
+ REMOVE_USER: "Fjern bruger"
+ ACCESS_DENIED: "Adgang nægtet"
+ ACCOUNT_NOT_ADMIN: "din konto har ikke administratorrettigheder"
+ PHP_INFO: "PHP-info"
+ INSTALLER: "Installation"
+ AVAILABLE_THEMES: "Tilgængelige temaer"
+ AVAILABLE_PLUGINS: "Tilgængelige plugins"
+ INSTALLED_THEMES: "Installerede temaer"
+ INSTALLED_PLUGINS: "Installerede plugins"
+ BROWSE_ERROR_LOGS: "Gennemse Fejl-logs"
+ SITE: "Site"
+ INFO: "Info"
+ SYSTEM: "System"
+ USER: "Bruger"
+ ADD_ACCOUNT: "Tilføj konto"
+ SWITCH_LANGUAGE: "Skift Sprog"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Plugin aktiveret"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Plugin deaktiveret"
+ SUCCESSFULLY_CHANGED_THEME: "Standardtema ændret"
+ INSTALLATION_FAILED: "Installation mislykkedes"
+ INSTALLATION_SUCCESSFUL: "Installation fuldført"
+ UNINSTALL_FAILED: "Afinstallation mislykkedes"
+ UNINSTALL_SUCCESSFUL: "Afinstallation fuldført"
+ SUCCESSFULLY_SAVED: "Gemt"
+ SUCCESSFULLY_COPIED: "Kopieret"
+ REORDERING_WAS_SUCCESSFUL: "Rækkefølge ændret"
+ SUCCESSFULLY_DELETED: "Slettet"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Sprog skiftet"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Du har ikke tilstrækkelige tilladelser til opgaven"
+ CACHE_CLEARED: "Cache ryddet"
+ METHOD: "Metode"
+ ERROR_CLEARING_CACHE: "Fejl under sletning af cache"
+ AN_ERROR_OCCURRED: "Der opstod en fejl"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Din backup er klar til download"
+ DOWNLOAD_BACKUP: "Download backup"
+ PAGES_FILTERED: "Filtrerede sider"
+ NO_PAGE_FOUND: "Ingen side fundet"
+ INVALID_PARAMETERS: "Ugyldige parametre"
+ NO_FILES_SENT: "Ingen filer sendt"
+ EXCEEDED_FILESIZE_LIMIT: "Størrelsesbegrænsning for PHP-configurationsfil overskredet"
+ UNKNOWN_ERRORS: "Ukendt fejl"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Størrelsesbegrænsning for Grav-configurationsfil overskredet"
+ UNSUPPORTED_FILE_TYPE: "Ikke-understøttet filtype"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Kunne ikke flytte den uploadede fil."
+ FILE_UPLOADED_SUCCESSFULLY: "Fil-upload lykkedes"
+ FILE_DELETED: "Filen blev slettet"
+ FILE_COULD_NOT_BE_DELETED: "Filen kunne ikke slettes"
+ FILE_NOT_FOUND: "Filen blev ikke fundet"
+ NO_FILE_FOUND: "Ingen fil blev fundet"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav blev opdateret til"
+ GRAV_UPDATE_FAILED: "Opdatering af Grav mislykkedes"
+ EVERYTHING_UPDATED: "Alt opdateret"
+ UPDATES_FAILED: "Opdateringer mislykkedes"
+ AVATAR_BY: "Avatar af"
+ AVATAR_UPLOAD_OWN: "Eller upload din egen..."
+ LAST_BACKUP: "Seneste backup"
+ FULL_NAME: "Fulde navn"
+ USERNAME: "Brugernavn"
+ EMAIL: "E-mail"
+ USERNAME_EMAIL: "Brugernavn eller e-mail"
+ PASSWORD: "Adgangskode"
+ PASSWORD_CONFIRM: "Bekræft adgangskode"
+ TITLE: "Titel"
+ LANGUAGE: "Sprog"
+ ACCOUNT: "Konto"
+ EMAIL_VALIDATION_MESSAGE: "Skal være en gyldig e-mail"
+ PASSWORD_VALIDATION_MESSAGE: "Adgangskode skal indeholde minimum ét ciffer, én versal, én minuskel samt udgøres af minimum otte tegn"
+ LANGUAGE_HELP: "Opsæt foretrukne sprog"
+ MEDIA: "Medier"
+ DEFAULTS: "Standarder"
+ SITE_TITLE: "Sitets Titel"
+ SITE_TITLE_PLACEHOLDER: "Overordnet webstedstitel"
+ SITE_TITLE_HELP: "Sitets standard-titel. Bruges ofte i temaer"
+ SITE_DEFAULT_LANG: "Standardsprog"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Standardsprog benyttet af temaets -etiket"
+ SITE_DEFAULT_LANG_HELP: "Standardsprog benyttet af temaets -etiket"
+ DEFAULT_AUTHOR: "Standard-forfatter"
+ DEFAULT_AUTHOR_HELP: "Standard-forfatternavn. Bruges ofte i temaer og sideindhold"
+ DEFAULT_EMAIL: "Standard-e-mail"
+ DEFAULT_EMAIL_HELP: "En standard-e-mail, som der kan henvises til i temaer og på sider"
+ TAXONOMY_TYPES: "Taksonomi-typer"
+ TAXONOMY_TYPES_HELP: "Taksonomi-typer skal defineres her hvis du vil bruge dem på sider"
+ PAGE_SUMMARY: "Side-resume"
+ ENABLED: "Aktiveret"
+ ENABLED_HELP: "Aktiver side-resume (resumeet returnerer det samme som sideindholdet)"
+ 'YES': "Ja"
+ 'NO': "Nej"
+ SUMMARY_SIZE: "Resume-længde"
+ SUMMARY_SIZE_HELP: "Det antal af en sides karakter, som skal bruges som resume"
+ FORMAT: "Format"
+ FORMAT_HELP: "kort = brug første forekomst af afgrænser eller størrelse; lang = afgrænser ignoreres"
+ SHORT: "Kort"
+ LONG: "Lang"
+ DELIMITER: "Afgrænser"
+ DELIMITER_HELP: "Resume-afgrænseren (standard: '===')"
+ METADATA: "Metadata"
+ METADATA_HELP: "Standard-metadataværdier, som vises på alle sider, medmindre de tilsidesættes af siden"
+ NAME: "Navn"
+ CONTENT: "Indhold"
+ SIZE: "Størrelse"
+ ACTION: "Handling"
+ REDIRECTS_AND_ROUTES: "Omdirigeringer og ruter"
+ CUSTOM_REDIRECTS: "Brugerdefinerede omdirigeringer"
+ CUSTOM_REDIRECTS_HELP: "ruter til omdirigering til andre sider. Gængse regex-erstatninger kan benyttes"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/dit/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/din/omdirigering"
+ CUSTOM_ROUTES: "Tilpassede ruter"
+ CUSTOM_ROUTES_HELP: "ruter til alias til andre sider. Gængs regex-erstatning er gyldig"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/dit/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/din/rute"
+ FILE_STREAMS: "Filstrømme"
+ DEFAULT: "Standard"
+ PAGE_MEDIA: "Sidemedier"
+ OPTIONS: "Indstillinger"
+ PUBLISHED: "Udgivet"
+ PUBLISHED_HELP: "Som standard offentliggøres en side medmindre du udtrykkeligt sætter published: false eller via en fremtidig publish_date eller fortidig unpublish_date"
+ DATE: "Dato"
+ DATE_HELP: "Dato-variablen tillader dig at sætte en specifik dato associeret med denne side."
+ PUBLISHED_DATE: "Udgivelsesdato"
+ PUBLISHED_DATE_HELP: "Kan give en dato for automatisk at udløse udgivelse."
+ UNPUBLISHED_DATE: "Afpubliceringsdato"
+ UNPUBLISHED_DATE_HELP: "Opsætning en dato for automatisk at afpublisere."
+ ROBOTS: "Robotter"
+ TAXONOMIES: "Taksonomier"
+ TAXONOMY: "Taksonomi"
+ ADVANCED: "Avanceret"
+ SETTINGS: "Indstillinger"
+ FOLDER_NUMERIC_PREFIX: "Numerisk Mappepræfiks"
+ FOLDER_NUMERIC_PREFIX_HELP: "Numerisk præfiks, der muliggør manuel sortering og indebærer synlighed"
+ FOLDER_NAME: "Mappenavn"
+ FOLDER_NAME_HELP: "Mappenavnet, som skal gemmes i filsystemet, for denne side"
+ PARENT: "Overordnet"
+ DEFAULT_OPTION_ROOT: "- Rod -"
+ DEFAULT_OPTION_SELECT: "- Vælg -"
+ DISPLAY_TEMPLATE: "Visningsskabelon"
+ DISPLAY_TEMPLATE_HELP: "Sidetypen, som oversættes til den twig-template, som viser siden"
+ BODY_CLASSES: "Body-klasser"
+ ORDERING: "Soreting"
+ PAGE_ORDER: "Side-sortering"
+ OVERRIDES: "Tilsidesættelser"
+ MENU: "Menu"
+ MENU_HELP: "Den streng, som skal anvendes i en menu. Hvis ingen angives, bruges Title."
+ SLUG: "Slug"
+ SLUG_HELP: "Slug-variablen bruges til specifikt at angive sidens andel af URL'en"
+ SLUG_VALIDATE_MESSAGE: "En slug må kun indeholde små alfanumeriske karakterer og bindestreger"
+ PROCESS: "Processer"
+ PROCESS_HELP: "Kontroller hvordan sider processeres. Kan angives per side i stedet for globalt"
+ DEFAULT_CHILD_TYPE: "Standardtitel for underordnede"
+ USE_GLOBAL: "Anvend Global"
+ ROUTABLE: "Kan routes"
+ ROUTABLE_HELP: "Om denne side kan tilgås via en URL"
+ CACHING: "Caching"
+ VISIBLE: "Synlig"
+ VISIBLE_HELP: "Afgør om en side er synlig i navigationen."
+ DISABLED: "Deaktiveret"
+ ITEMS: "Elementer"
+ ORDER_BY: "Sorter Efter"
+ ORDER: "Sortering"
+ FOLDER: "Mappe"
+ ASCENDING: "Stigende"
+ DESCENDING: "Faldende"
+ ADD_MODULAR_CONTENT: "Tilføj Modulært Indhold"
+ PAGE_TITLE: "Sidetitel"
+ PAGE_TITLE_HELP: "Sidens titel"
+ PAGE: "Side"
+ MODULAR_TEMPLATE: "Modulær Skabelon"
+ FRONTMATTER: "Forskræp"
+ FILENAME: "Filnavn"
+ PARENT_PAGE: "Overordnet Side"
+ HOME_PAGE: "Hjem-side"
+ HOME_PAGE_HELP: "Siden som Grav bruger som standard-destinationsside"
+ DEFAULT_THEME: "Standardtema"
+ DEFAULT_THEME_HELP: "Gravs standardtema (som udgangspunkt Antimatter)"
+ TIMEZONE: "Tidszone"
+ TIMEZONE_HELP: "Tilsidesæt serverens standardtidszone"
+ SHORT_DATE_FORMAT: "Kort datoformat-visning"
+ SHORT_DATE_FORMAT_HELP: "Angiv det korte datoformat, der kan bruges af temaer"
+ LONG_DATE_FORMAT: "Lang datoformat-visning"
+ LONG_DATE_FORMAT_HELP: "Angiv det lange datoformat, der kan bruges af temaer"
+ DEFAULT_ORDERING: "Standardsortering"
+ DEFAULT_ORDERING_HELP: "Sider i en liste bliver vist i denne rækkefølge, medmindre den tilsidesættes"
+ DEFAULT_ORDERING_DEFAULT: "Standard - baseret på mappenavn"
+ DEFAULT_ORDERING_FOLDER: "Mappe - baseret på mappenavn uden præfiks"
+ DEFAULT_ORDERING_TITLE: "Titel - baseret på titel-felt i headeren"
+ DEFAULT_ORDERING_DATE: "Dato - baseret på dato-felt i headeren"
+ DEFAULT_ORDER_DIRECTION: "Standard-sorteringsretning"
+ DEFAULT_ORDER_DIRECTION_HELP: "Den retning, som siderne i en liste skal sorteres i"
+ DEFAULT_PAGE_COUNT: "Standard-sideantal"
+ DEFAULT_PAGE_COUNT_HELP: "Standard for maksimalt antal sider i en liste"
+ DATE_BASED_PUBLISHING: "Datobaseret publicering"
+ DATE_BASED_PUBLISHING_HELP: "(Af)publicer automatisk indhold baseret på dets dato"
+ EVENTS: "Begivenheder"
+ EVENTS_HELP: "Aktiver og deaktiver specifikke begivenheder. Deaktivering af disse kan ødelægge plugins"
+ REDIRECT_DEFAULT_ROUTE: "Standardrute for omdirigeringer"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Omdiriger automatisk til en sides standardrute"
+ LANGUAGES: "Sprog"
+ SUPPORTED: "Understøttet"
+ SUPPORTED_HELP: "Kommasepareret liste af sprogkoder på hver to bogstaver (f.eks. 'en,da,fr')"
+ TRANSLATIONS_ENABLED: "Oversættelser aktiveret"
+ TRANSLATIONS_ENABLED_HELP: "Understøt oversættelser i Grav, plugins og udvidelser"
+ TRANSLATIONS_FALLBACK: "Fallback til oversættelser"
+ TRANSLATIONS_FALLBACK_HELP: "Fallback gennem understøttede oversættelser hvis det aktive sprog ikke findes"
+ ACTIVE_LANGUAGE_IN_SESSION: "Aktivt sprog i session"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Gem det aktive sprog i sessionen"
+ HTTP_HEADERS: "HTTP-headere"
+ EXPIRES: "Udløber"
+ EXPIRES_HELP: "Indstiller expires-headeren. Værdien angives i sekunder."
+ CACHE_CONTROL: "HTTP Cache-kontrol"
+ CACHE_CONTROL_HELP: "Angive en gyldig cache-kontrolværdi såsom 'no-cache, no-butik, must-revalidate'"
+ LAST_MODIFIED: "Senest ændret"
+ LAST_MODIFIED_HELP: "Angiver \"last modified\"-headeren, der kan hjælpe med at optimere proxy og browsercachelagring"
+ ETAG: "ETag"
+ ETAG_HELP: "Indstiller etag-header for at hjælpe med at identificere, hvornår en side er blevet ændret"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Angiver \"Vary: Accept Encoding\"-headeren, der hjælper med proxy og CDN-cachelagring"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Markdown Extra"
+ MARKDOWN_EXTRA_HELP: "Aktiver standardunderstøttelse for Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Escape HTML-elementer i Markdown Extra-låger"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Escaper HTML-elementer i Markdown Extra-låger"
+ AUTO_LINE_BREAKS: "Automatiske linjeskift"
+ AUTO_LINE_BREAKS_HELP: "Aktiver understøttelse af automatiske linjeskift i markdown"
+ AUTO_URL_LINKS: "Automatiske URL-links"
+ AUTO_URL_LINKS_HELP: "Aktiver automatisk konvertering af URL'er til HTML-hyperlinks"
+ ESCAPE_MARKUP: "Escape markup"
+ ESCAPE_MARKUP_HELP: "Escape markup-tags til HMTL-entiteter"
+ CACHING_HELP: "Global TÆND/SLUK-kontakt til aktivering/deaktivering af Grav-caching"
+ CACHE_CHECK_METHOD: "Metode til cache-tjek"
+ CACHE_CHECK_METHOD_HELP: "Angiv den metode, som Grav skal bruge til at tjekke om en side er blevet ændret."
+ CACHE_DRIVER: "Cache-driver"
+ CACHE_DRIVER_HELP: "Angiv hvilken cache-driver, som Grav skal bruge. 'Auto-detekter' forsøger at finde den bedste for dig"
+ CACHE_PREFIX: "Cache-præfiks"
+ CACHE_PREFIX_HELP: "Identifikator for en del af Grav-nøglen. Ændr kun hvis du ved, hvad du laver."
+ CACHE_PREFIX_PLACEHOLDER: "Afledt af base-URL'en (tilsidesæt ved at indtaste en arbitrær streng)"
+ CACHE_PURGE_JOB: "Kør planlagt rensningsjob"
+ CACHE_PURGE_JOB_HELP: "Du kan med planlæggeren periodisk rydde ud gamle Doctrine-filcachemapper med dette job"
+ CACHE_CLEAR_JOB: "Kør planlagt rydningsjob"
+ CACHE_CLEAR_JOB_HELP: "Du kan med planlæggeren periodisk rydde Grav-cachen"
+ CACHE_JOB_TYPE: "Cachejobtype"
+ CACHE_JOB_TYPE_HELP: "Ryd cachen enten for 'standard' eller 'alle' mapper"
+ CACHE_PURGE: "Rens gammel cache"
+ LIFETIME: "Livstid"
+ LIFETIME_HELP: "Angiver cache-livstiden i sekunder. 0 = uendelig"
+ GZIP_COMPRESSION: "Gzip-kompression"
+ GZIP_COMPRESSION_HELP: "Aktiver GZip-kompression af Grav-siden for øget ydeevne."
+ TWIG_TEMPLATING: "Twig-skabeloner"
+ TWIG_CACHING: "Twig-cache"
+ TWIG_CACHING_HELP: "Indstil Twigs cache-mekanisme. Lad feltet være aktiveret for at opnå den bedste ydeevne."
+ TWIG_DEBUG: "Twig-debug"
+ TWIG_DEBUG_HELP: "Giver mulighed for ikke at indlæse Twigs debugger-udvidelse"
+ DETECT_CHANGES: "Registrer ændringer"
+ DETECT_CHANGES_HELP: "Twig genkompilerer automatisk sin cache hvis den registrerer ændringer i Twig-skabeloner"
+ AUTOESCAPE_VARIABLES: "Escape automatisk variabler"
+ AUTOESCAPE_VARIABLES_HELP: "Escaper automatisk alle variabler. Dette vil højst sandsynligt ødelægge dit site"
+ ASSETS: "Aktiver"
+ CSS_PIPELINE: "CSS-pipeline"
+ CSS_PIPELINE_HELP: "CSS-pipelinen forener flere CSS-ressourcer i én fil"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Inkluder eksterne enheder i CSS pipelinen"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Eksterne URL'er har, til tider, relative fil referencer, og bør ikke blive pipelinet"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Pre-rendering af CSS pipelinen"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Render CSS pipelinen før alle andre CSS referencer, der ikke er inkluderet"
+ CSS_MINIFY: "CSS-minificering"
+ CSS_MINIFY_HELP: "Minificer CSS ved brug af pipeline"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "Tilsidesæt Windows' CSS-minificering"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Tilsidesættelse af minificering på Windows-platforme. Standard = Fra pga. ThreadStackSize"
+ CSS_REWRITE: "CSS-omskrivning"
+ CSS_REWRITE_HELP: "Omskriv relative CSS-URL'er under pipelining"
+ JAVASCRIPT_PIPELINE: "Javascript-pipeline"
+ JAVASCRIPT_PIPELINE_HELP: "JS-pipelinen samler flere JS-ressourcer i én fil"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Inkluder eksterne enheder i JS pipelinen"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Eksterne URL'er har, til tider, relative fil referencer, og bør ikke blive pipelinet"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Pre-rendering af JS pipelinen"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Render JS pipelinen før alle andre JS referencer, der ikke er inkluderet"
+ JAVASCRIPT_MINIFY: "Javascript-minificering"
+ JAVASCRIPT_MINIFY_HELP: "Minificer JS ved brug af pipeline"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Aktiver tidsstempler på aktiver"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Aktiver tidsstempler på aktiver"
+ COLLECTIONS: "Kollektioner"
+ ERROR_HANDLER: "Fejlbehandler"
+ DISPLAY_ERRORS: "Visningsfejl"
+ DISPLAY_ERRORS_HELP: "Vis fuld backtrace på fejlside"
+ LOG_ERRORS: "Log fejl"
+ LOG_ERRORS_HELP: "Log fejl i mappen /logs"
+ LOG_HANDLER: "Loghåndtering"
+ LOG_HANDLER_HELP: "Hvor loggerne skal placeres"
+ SYSLOG_FACILITY: "Syslog-facilitet"
+ SYSLOG_FACILITY_HELP: "Syslog-facilitet til output"
+ DEBUGGER: "Fejlfinder"
+ DEBUGGER_HELP: "Aktivér Grav-fejlfinder og flg. indstillinger"
+ DEBUG_TWIG: "Fejlfind i Twig"
+ DEBUG_TWIG_HELP: "Aktivér fejlfinding i Twig-skabeloner"
+ SHUTDOWN_CLOSE_CONNECTION: "Luk forbindelse ved nedlukning"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Luk forbindelsen inden onShutdown()-kald. Slået fra ved debugging"
+ DEFAULT_IMAGE_QUALITY: "Standard-billedkvalitet"
+ DEFAULT_IMAGE_QUALITY_HELP: "Standardbilledkvalitet til brug ved cachelagring af billeder (85%)"
+ CACHE_ALL: "Cache alle billeder"
+ CACHE_ALL_HELP: "Kør alle billeder - også ikke-manipulerede - gennem Gravs cache-system"
+ IMAGES_DEBUG: "Vandmærke ved debugging af billeder"
+ IMAGES_DEBUG_HELP: "Vis overlejring på billeder. Overlejringen indikerer billedets pixel-dybde til brug ved f.eks. visning på retina-skærme"
+ IMAGES_SEOFRIENDLY: "SEO-venlige billednavne"
+ IMAGES_SEOFRIENDLY_HELP: "Når aktiveret, vises billednavnet først, dernæst en mindre hash, der afspejler udførte operationer"
+ UPLOAD_LIMIT: "Fil-upload grænse"
+ UPLOAD_LIMIT_HELP: "Angiv maks. filstørrelse i bytes (0 = ubegrænset)"
+ ENABLE_MEDIA_TIMESTAMP: "Aktivér tidsstempler på medier"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Føjer et tidsstempel baseret på seneste ændringsdato til hvert medieemne"
+ SESSION: "Session"
+ SESSION_ENABLED_HELP: "Aktivér sessionsunderstøttelse i Grav"
+ TIMEOUT: "Timeout"
+ TIMEOUT_HELP: "Angiver sessionstimeout i sekunder"
+ SESSION_NAME_HELP: "En identifikator, der benytts til at danne navnet på sessionens-cookie'en"
+ SESSION_UNIQUENESS: "Unik streng"
+ SESSION_UNIQUENESS_HELP: "MD5-hash af Gravs rodsti, dvs. `GRAV_ROOT` (standard) eller én baseret på den tilfældige` security.salt`-streng."
+ ABSOLUTE_URLS: "Absolutte URL'er"
+ ABSOLUTE_URLS_HELP: "Absolutte eller relative URL'er til 'base_url'"
+ PARAMETER_SEPARATOR: "Parameterseparator"
+ PARAMETER_SEPARATOR_HELP: "Separator til godkendte parametre, som kan ændres til Apache på Windows"
+ TASK_COMPLETED: "Opgave fuldført"
+ EVERYTHING_UP_TO_DATE: "Alt er opdateret"
+ UPDATES_ARE_AVAILABLE: "opdatering(-er) er tilgængelige"
+ IS_AVAILABLE_FOR_UPDATE: "er tilgængelig for opdatering"
+ IS_NOW_AVAILABLE: "er nu tilgængelig"
+ CURRENT: "Aktuel"
+ UPDATE_GRAV_NOW: "Opdater Grav nu"
+ GRAV_SYMBOLICALLY_LINKED: "Grav er forbundet med symbolsk link. Opgraderingen vil ikke være tilgængelig"
+ UPDATING_PLEASE_WAIT: "Opdatering... Vent venligst; downloader"
+ OF_THIS: "af denne"
+ OF_YOUR: "af dit"
+ HAVE_AN_UPDATE_AVAILABLE: "har en tilgængelig opdatering"
+ SAVE_AS: "Gem som"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Sikker på, at du vil slette denne side og alle dens undersider? Er siden oversat til andre sprog, vil disse oversættelser blive bevaret og skal slettes separat. I modsat fald bliver sidemappen og dens undersider slettet. Denne handling er irreversibel."
+ AND: "og"
+ UPDATE_AVAILABLE: "Opdatering tilgængelig"
+ METADATA_KEY: "Nøgle (f.eks. 'Nøgleord')"
+ METADATA_VALUE: "Værdi (f.eks. 'Blog, Grav')"
+ USERNAME_HELP: "Brugernavnet skal være mellem 3 og 16 karakterer og kan indeholde små bogstaver, tal, understreger og bindestreger. Store bogstaver, mellemrum og specielle karakter er ikke tilladt"
+ FULLY_UPDATED: "Fuldt opdateret"
+ SAVE_LOCATION: "Gemmeplacering"
+ PAGE_FILE: "Sideskabelon"
+ PAGE_FILE_HELP: "Sideskabelon filnavn, og standard visnings-skabelonen for denne side"
+ NO_USER_ACCOUNTS: "Der blev ikke fundet nogen brugerkonto; opret venligst en først..."
+ NO_USER_EXISTS: "Ingen lokalbruger til denne konto, kan ikke gemme..."
+ REDIRECT_TRAILING_SLASH: "Omdiriger efterstillet skråstreg"
+ REDIRECT_TRAILING_SLASH_HELP: "Udfør en 301-omdirigering i stedet for gennemsigtigt at håndtere URI'er med efterstillet skråstreg."
+ DEFAULT_DATE_FORMAT: "Sidedatoformat"
+ DEFAULT_DATE_FORMAT_HELP: "Det side-datoformat, som Grav skal bruge. Som standard forsøger Grav at gætte dit datoformat, men du kan specificeret et format med PHP's dato-syntaks (f.eks. Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Gæt automatisk"
+ IGNORE_FILES: "Ignorer filer"
+ IGNORE_FILES_HELP: "Specifikke filer, som skal ignoreres ved behandlingen af sider"
+ IGNORE_FOLDERS: "Ignorer mapper"
+ IGNORE_FOLDERS_HELP: "Specifikke mapper, som skal ignoreres ved behandlingen af sider"
+ HIDE_EMPTY_FOLDERS: "Skjul tomme mapper"
+ HIDE_EMPTY_FOLDERS_HELP: "Har mappen ikke en .md-fil, skal den være skjult i navigationen og være ikke-rootbar"
+ HTTP_ACCEPT_LANGUAGE: "Indstil sprog fra browser"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Du kan forsøge at indstille sproget på basis af browserens \"http_accept_language\"-headertag"
+ OVERRIDE_LOCALE: "Tilsidesæt lokation"
+ OVERRIDE_LOCALE_HELP: "Tilsidesæt PHP's \"locale\"-indstilling baseret på det nuværende sprog"
+ REDIRECT: "Side-omdirigering"
+ REDIRECT_HELP: "Angiv en side-rute eller ekstern URL, som denne side skal omdirigere til, f.eks. \"/en/rute\" eller \"http://etsite.com\""
+ PLUGIN_STATUS: "Plugin-status"
+ INCLUDE_DEFAULT_LANG: "Inkluder standardsproget"
+ INCLUDE_DEFAULT_LANG_HELP: "Dette foranstiller standardsproget i alle standardsprogets URL'er, f.eks. \"/da/blog/mit-indlæg\""
+ PAGES_FALLBACK_ONLY: "Kun tilbagefaldsside"
+ PAGES_FALLBACK_ONLY_HELP: "Kun 'fallback' for at finde sideindhold via understøttede sprog. Standardadfærd er at vise et hvilket som helst tilgængeligt sprog, såfremt det aktivt sprog mangler"
+ ALLOW_URL_TAXONOMY_FILTERS: "URL-taksonomifiltre"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Sidebaserede samlingergør det muligt at filtrere via \"/taxonomy:værdi\"."
+ REDIRECT_DEFAULT_CODE: "Standardomdirigeringskode"
+ REDIRECT_DEFAULT_CODE_HELP: "HTTP-statuskode til brug ved omdirigeringer"
+ IGNORE_HIDDEN: "Ignorer skjulte"
+ IGNORE_HIDDEN_HELP: "Ignorer alle filer og mapper, der begynder med punktum"
+ WRAPPED_SITE: "Indpakket site"
+ WRAPPED_SITE_HELP: "Bruges af temaer/plugins til at bestemme, om Grav er pakket ind i en anden platform"
+ FALLBACK_TYPES: "Tilladte fallback-typer"
+ FALLBACK_TYPES_HELP: "Tilladte filtyper, der kan tilgås med en side-rute. Som standard sat til alle understøttede medietyper."
+ INLINE_TYPES: "Indlejrede fallback-typer"
+ INLINE_TYPES_HELP: "En liste over filtyper, der skal vises indlejret i stedet for hentes"
+ APPEND_URL_EXT: "Tilføj URL-efternavn"
+ APPEND_URL_EXT_HELP: "Tilføjer et brugerdefineret efternavn til sidens webadresse. Bemærk, at dette vil få Grav til at kigge efter \". . twig\"-skabeloner"
+ PAGE_MODES: "Side-tilstande"
+ PAGE_TYPES: "Sidetyper"
+ PAGE_TYPES_HELP: "Bestemmer de sidetyper, som Grav understøtter, og rækkefølgen bestemmer fallback-typen, der skal benyttes, såfremt anmodningen er tvetydig"
+ ACCESS_LEVELS: "Adgangsniveauer"
+ GROUPS: "Grupper"
+ GROUPS_HELP: "Liste af grupper, som brugeren er medlem af"
+ ADMIN_ACCESS: "Admin-adgang"
+ SITE_ACCESS: "Webstedsadgang"
+ INVALID_SECURITY_TOKEN: "Ugyldigt sikkerhedstoken"
+ ACTIVATE: "Aktivér"
+ TWIG_UMASK_FIX: "Afmaskeringsfiks"
+ TWIG_UMASK_FIX_HELP: "Som standard opretter Twig cachede filer som 0755. Dette fiks skifter dette til 0775"
+ CACHE_PERMS: "Cachetilladelser"
+ CACHE_PERMS_HELP: "Standard cachemappetilladelser. Som regel 0755 eller 0775, afhængig af opsætningen"
+ REMOVE_SUCCESSFUL: "Fjernet"
+ REMOVE_FAILED: "Fjernelse mislykkedes"
+ HIDE_HOME_IN_URLS: "Skjul hjem-route i URL'er"
+ HIDE_HOME_IN_URLS_HELP: "Sikrer at standard-routes for enhver side under hjem ikke henviser til hjemsidens normale route"
+ TWIG_FIRST: "Behandl Twig først"
+ TWIG_FIRST_HELP: "Har du aktiveret Twig-sidebehandling, kan du opsætte Twig til at gøre dette før eller efter markdown"
+ SESSION_SECURE: "Sikker"
+ SESSION_SECURE_HELP: "Angiver, om kommunikation med denne cookie skal ske krypteret. ADVARSEL: Brug kun dette på sites, der kører udelukkende på HTTPS"
+ SESSION_HTTPONLY: "Kun HTTP"
+ SESSION_HTTPONLY_HELP: "Hvis denne indstilling er aktiveret bruges cookes kun over HTTP og Javascript-ændringer tillades ikke"
+ REVERSE_PROXY: "Omvendt proxy"
+ REVERSE_PROXY_HELP: "Aktiver denne hvis du er bag en omvendt proxy og har problemer med URL'er, der indeholder ukorrekte porte"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Ugyldigt forskræp; kunne ikke gemme"
+ ADD_FOLDER: "Tilføj mappe"
+ PROXY_URL: "Proxy-URL"
+ PROXY_URL_HELP: "Indtast proxyens host eller IP og port"
+ NOTHING_TO_SAVE: "Intet at gemme"
+ FILE_ERROR_ADD: "Der opstod en fejl under forsøg på at tilføje filen"
+ FILE_ERROR_UPLOAD: "Der opstod en fejl under forsøget på at uploade filer"
+ FILE_UNSUPPORTED: "Ikke-understøttet filtype"
+ ADD_ITEM: "Tilføj element"
+ FILE_TOO_LARGE: "Filen er for stor til at blive uploadet, maksimal tilladt er %s ifølge dine PHP-indstillinger. Øge din 'post_max_size' PHP indstilling"
+ INSTALLING: "Installerer"
+ LOADING: "Indlæser.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "De følgende afhængigheder skal være opfyldt først:"
+ ERROR_INSTALLING_PACKAGES: "Fejl under installering af af pakke(r)"
+ INSTALLING_DEPENDENCIES: "Installerer afhængigheder..."
+ INSTALLING_PACKAGES: "Installerer pakke(r).."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Pakke(r) installeret korrekt."
+ READY_TO_INSTALL_PACKAGES: "Klar til at installere pakke(r)"
+ PACKAGES_NOT_INSTALLED: "Pakker ikke installeret"
+ PACKAGES_NEED_UPDATE: "Pakker allerede installeret, men forældede"
+ PACKAGES_SUGGESTED_UPDATE: "Pakker allerede installeret, og versionen er i orden, men vil blive opdateret for at holde dig up to date"
+ REMOVE_THE: "Fjern %s"
+ CONFIRM_REMOVAL: "Er du sikker på, at du ønsker at slette %s?"
+ REMOVED_SUCCESSFULLY: "%s fjernet korrekt"
+ ERROR_REMOVING_THE: "Fejl i forsøget på at fjerne %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s krævede følgende afhængigheder, som ikke er påkrævet af andre pakker. Hvis du ikke bruger dem, kan du fjerne dem her."
+ READY_TO_UPDATE_PACKAGES: "Klar til at opdatere pakke(r)"
+ ERROR_UPDATING_PACKAGES: "Fejl under opdatering af pakke(r)"
+ UPDATING_PACKAGES: "Opdaterer pakke(r).."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Pakke(r) opdateret korrekt."
+ UPDATING: "Updaterer"
+ GPM_RELEASES: "GPM udgivelser"
+ GPM_RELEASES_HELP: "Vælg 'Test' for at installere beta eller testversioner"
+ GPM_METHOD: "Fjernhentningsmetode"
+ GPM_METHOD_HELP: "Når indstillet til Auto afgør Grav, om fopen er tilgængelig og benytter den, ellers benyttes cURL. For at gennemtvinge brugen af den ene eller den, skift indstillingen."
+ GPM_VERIFY_PEER: "Fjerngodkend Peer (SSL)"
+ GPM_VERIFY_PEER_HELP: "Visse udbydere synes at svigte med at verificere getgrav.org SSL-certifikat, hvilket betyder, at GPM ikke vil fungere. Er dette tilfældet for dig, vil deaktivering af denne indstilling måske hjælpe"
+ AUTO: "Auto"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabil"
+ TESTING: "Tester"
+ FRONTMATTER_PROCESS_TWIG: "Processer frontmatter Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Når aktiveret kan du bruge Twig's konfigurationsvariabler i sidens frontmatter"
+ FRONTMATTER_IGNORE_FIELDS: "Ignorer frontmatter felter"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Visse frontmatter felter kan indeholde Twig, men skal ikke behandles. Så som \"formularer\""
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Pakke %s installeret"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Overordnet rækkefølge-indstilling, orden de-aktiveret"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Siden er ikke synlig, orden de-aktiveret"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Sortering af rækkefølge via administrationen er ikke tilgængelig, fordi der er mere end 200 under-elementer"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Sidebestilling er deaktiveret for denne side, da Numerisk Mappenpræfiks ikke er aktiveret"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "OBS: Du kan ikke tilføje medie-filer før du har gemt siden. Klik på \"Gem\" øverst"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "OBS: Siden skal gemmes før du kan tilføje filer til den."
+ DROP_FILES_HERE_TO_UPLOAD: "Smid dine filer her eller, Klik i dette område"
+ INSERT: "Indsæt"
+ UNDO: "Fortryd"
+ REDO: "Gendan"
+ HEADERS: "Overskrifter"
+ BOLD: "Fed"
+ ITALIC: "Kursiv"
+ STRIKETHROUGH: "Gennemstreget"
+ SUMMARY_DELIMITER: "Sammendragsafgrænser"
+ LINK: "Link"
+ IMAGE: "Billede"
+ BLOCKQUOTE: "Citatblok"
+ UNORDERED_LIST: "Usorteret liste"
+ ORDERED_LIST: "Sorteret liste"
+ EDITOR: "Editor"
+ PREVIEW: "Eksempelvisning"
+ FULLSCREEN: "Fuld skærm"
+ MODULAR: "Modulær"
+ MODULAR_SETUP: "Modulopsætning"
+ NON_ROUTABLE: "Ikke tilgængelig"
+ NON_MODULAR: "Ikke modulær"
+ NON_VISIBLE: "Ikke-synlig"
+ NON_PUBLISHED: "Ikke udgivet"
+ CHARACTERS: "tegn"
+ PUBLISHING: "Udgivelse"
+ NOTIFICATIONS: "Notifikationer"
+ MEDIA_TYPES: "Medietyper"
+ IMAGE_OPTIONS: "Billedmuligheder"
+ MIME_TYPE: "MIME-type"
+ THUMB: "Miniature"
+ TYPE: "Type"
+ FILE_EXTENSION: "Filendelse"
+ LEGEND: "Sideoversigt"
+ MEMCACHE_SERVER: "Memcache-server"
+ MEMCACHE_SERVER_HELP: "Memcache-serveradressen"
+ MEMCACHE_PORT: "Memcache-port"
+ MEMCACHE_PORT_HELP: "Memcache-serverporten"
+ MEMCACHED_SERVER: "Memcachet-server"
+ MEMCACHED_SERVER_HELP: "Memcachet-serveradresse"
+ MEMCACHED_PORT: "Memcache-port"
+ MEMCACHED_PORT_HELP: "Memcachet-serverport"
+ REDIS_SERVER: "Redis-server"
+ REDIS_SERVER_HELP: "Redis-serveradressen"
+ REDIS_PORT: "Redis-port"
+ REDIS_PORT_HELP: "Redis-serverport"
+ REDIS_PASSWORD: "Redis-adgangskode/hemmelighed"
+ ALL: "Alle"
+ FROM: "fra"
+ TO: "til"
+ RELEASE_DATE: "Udgivelsesdato"
+ SORT_BY: "Sortér efter"
+ RESOURCE_FILTER: "Filtrér..."
+ FORCE_SSL: "Gennemtving SSL"
+ FORCE_SSL_HELP: "Gennemtving SSL globalt, hvis aktiveret, når webstedet nås via HTTP, Grav sender en omdirigering til HTTPS-siden"
+ NEWS_FEED: "Nyhedsfeed"
+ EXTERNAL_URL: "Ekstern URL"
+ SESSION_PATH: "Sessionssti"
+ SESSION_PATH_HELP: "Benyt kun, hvis du vælger en tilpasset basis-URL (du omskrive webstedsdomæne/undermappe)"
+ CUSTOM_BASE_URL: "Tilpasset basis-URL"
+ CUSTOM_BASE_URL_HELP: "Benyt, hvis du ønsker at omskrive webstedsdomæne eller benytte en anden undermappe end den, Grav benytter. Eksempel: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Kan ikke benytte "%s" uden for sider.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Kan ikke uploade fil %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Kan ikke flytte fil %s til "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Annullér upload'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Sikker på, at du vil annullere denne upload?'
+ DROPZONE_DEFAULT_MESSAGE: 'Slip dine filer hér eller, klik i dette område'
+ DROPZONE_FALLBACK_MESSAGE: 'Din browser understøtter ikke træk-og-slip fil-uploads.'
+ DROPZONE_FALLBACK_TEXT: 'Benyt venligst formularen nedenfor for alternativt at uploade filer ''som i gamle dage''.'
+ DROPZONE_FILE_TOO_BIG: 'Filen er for stor ({{filesize}}MiB). Maks. filstørrelse: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Filer af denne type kan ikke uploades."
+ DROPZONE_MAX_FILES_EXCEEDED: "Der kan ikke uploades flere filer."
+ DROPZONE_REMOVE_FILE: "Fjern fil"
+ DROPZONE_RESPONSE_ERROR: "Serveren svarede med koden {{statusCode}}."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Aktivere Admin-cachelagring"
+ ADMIN_CACHING_HELP: "Cachelagring i admin kan styres uafhængigt af frontend-webstedet"
+ DESTINATION_NOT_SPECIFIED: "Destination er ikke angivet"
+ UPLOAD_ERR_NO_TMP_DIR: "Mangler en midlertidige mappe"
+ SESSION_SPLIT: "Sessionsopdeling"
+ SESSION_SPLIT_HELP: "Opdel sessioner uafhængigt mellem websted og andre plugins (f.eks. Admin)"
+ ERROR_FULL_BACKTRACE: "Vis detaljeret Backtrace fejlinfo"
+ ERROR_SIMPLE: "Vis simpel fejlinfo"
+ ERROR_SYSTEM: "Systemfejl"
+ IMAGES_AUTO_FIX_ORIENTATION: "Korrigér orientering automatisk"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Korrigér automatisk billedretningen baseret på Exif-dataene"
+ REDIS_SOCKET: "Redis socket"
+ REDIS_SOCKET_HELP: "Redis socket"
+ NOT_SET: "Ikke indstillet"
+ PERMISSIONS: "Rettigheder"
+ NEVER_CACHE_TWIG: "Mellemlagre aldrig Twig"
+ NEVER_CACHE_TWIG_HELP: "Cache kun indhold og behandle Twig for hver side. Ignorerer twig_first-indstilling."
+ ALLOW_WEBSERVER_GZIP: "Tillad WebServer Gzip"
+ ALLOW_WEBSERVER_GZIP_HELP: "Deaktiveret som standard. Når aktiveret, vil WebServer-konfigureret Gzip-/Deflate-kompression fungere, men HTTP-forbindelsen vil ikke blive lukket før onShutDown() begivenheden forårsager langsommere sideindlæsning"
+ OFFLINE_WARNING: "Kan ikke etablere forbindelse til GPM"
+ CLEAR_IMAGES_BY_DEFAULT: "Ryd som standard billede-cachen"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Som standard ryddes behandlede billeder for alle caches. Dette kan deaktiveres"
+ CLI_COMPATIBILITY: "CLI-kompatibilitet"
+ CLI_COMPATIBILITY_HELP: "Sikrer, at kun ikke-flygtig Cache-drivere benyttes (fil, redis, memcache etc.)"
+ REINSTALL_PLUGIN: "Geninstallere plugin"
+ REINSTALL_THEME: "Geninstallere tema"
+ REINSTALL_THE: "Geninstallér %s"
+ CONFIRM_REINSTALL: "Sikker på, at du vil geninstallere dette %s?"
+ REINSTALLED_SUCCESSFULLY: "%s geninstalleret"
+ ERROR_REINSTALLING_THE: "Fejl under geninstallering af %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Pakke %s geninstalleret"
+ REINSTALLATION_FAILED: "Geninstallation mislykkedes"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "Den installerede version er ikke den seneste udgivelse. Ved at klikke på Fortsæt fjerner du fjerne den aktuelle version og installerer den senest tilgængelige version"
+ TOOLS: "Værktøjer"
+ NO_PACKAGE_NAME: "Pakkenavn ikke angivet"
+ PACKAGE_EXTRACTION_FAILED: "Pakkeudpakning mislykkedes"
+ NOT_VALID_GRAV_PACKAGE: "Ikke en gyldig Grav-pakke"
+ NAME_COULD_NOT_BE_DETERMINED: "Navn kunne ikke fastslås"
+ CANNOT_OVERWRITE_SYMLINKS: "Kan ikke overskrive symlinks"
+ ZIP_PACKAGE_NOT_FOUND: "ZIP-pakke blev ikke fundet"
+ GPM_OFFICIAL_ONLY: "Kun officiel GPM"
+ GPM_OFFICIAL_ONLY_HELP: "Tillade kun direkte installationer fra det officielle GPM-repositorie."
+ NO_CHILD_TYPE: "Ingen underordnet type for denne rawroute"
+ SORTABLE_PAGES: "Sorterbare sider:"
+ ADMIN_SPECIFIC_OVERRIDES: "Admin-specifikke tilsidesætter"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Underordnedes visningsrækkefølge"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Rækkefølgen, hvori undersider til denne side skal vises i visningen 'Sider' i Admin-plugin"
+ PWD_PLACEHOLDER: "kompleks streng minimum 8 tegn lang"
+ PWD_REGEX: "Adgangskode Regex"
+ PWD_REGEX_HELP: "Adgangskode skal som standard indeholde mindst ét ciffer, én versal og én minuskel samt udgøres af minimum otte tegn"
+ USERNAME_PLACEHOLDER: "kun minuskler, f.eks. 'admin'"
+ USERNAME_REGEX: "Brugernavn Regex"
+ USERNAME_REGEX_HELP: "Som standard kun minuskler, cifre, bindestreger og understregninger på 3-16 tegn"
+ CONTENT_PADDING: "Indholdsrammer"
+ CONTENT_PADDING_HELP: "Aktivér/Deaktivér indholdsrammer omkring indholdsområde for at give mere plads"
+ ENABLE_AUTO_METADATA: "Auto-metadata fra Exif"
+ ENABLE_AUTO_METADATA_HELP: "Automatisk generere metadatafiler til billeder med exif-oplysninger"
+ 2FA_TITLE: "Totrinsautentificering"
+ 2FA_INSTRUCTIONS: "### 2-faktor Autentificering \nDu har **2FA** aktiveret for denne konto. Benyt venligst din **2FA**-app til at angive den aktuelle **6-cifrede kode** for at fuldføre loginprocessen."
+ 2FA_LABEL: "Admin-adgang"
+ 2FA_FAILED: "Ugyldig 2-faktor autentificeringskode, forsøg venligst igen..."
+ 2FA_ENABLED: "2FA aktiveret"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "2FA hemmelighed"
+ 2FA_REGENERATE: "Regenerér"
+ FORCE_LOWERCASE_URLS: "Brug små bogstaver i URL'er"
diff --git a/user/plugins/admin/languages/de.yaml b/user/plugins/admin/languages/de.yaml
new file mode 100644
index 0000000..c19ab6a
--- /dev/null
+++ b/user/plugins/admin/languages/de.yaml
@@ -0,0 +1,769 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Dies ist eine Beta-Version! Benutzung auf eigene Gefahr..."
+ ADMIN_REPORT_ISSUE: "Fehler gefunden? Bitte melden Sie ihn auf GitHub."
+ EMAIL_FOOTER: " Umgesetzt mit Grav - dem modernen Flat-File CMS"
+ LOGIN_BTN: "Anmelden"
+ LOGIN_BTN_FORGOT: "Passwort vergessen"
+ LOGIN_BTN_RESET: "Passwort zurücksetzen"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Neues Passwort anfordern"
+ LOGIN_BTN_CLEAR: "Formular leeren"
+ LOGIN_BTN_CREATE_USER: "Benutzer erstellen"
+ LOGIN_LOGGED_IN: "Anmeldung erfolgreich"
+ LOGIN_FAILED: "Anmeldung fehlgeschlagen"
+ LOGGED_OUT: "Sie wurden abgemeldet"
+ RESET_NEW_PASSWORD: "Bitte geben Sie ein neues Passwort ein …"
+ RESET_LINK_EXPIRED: "Der Link zum Zurücksetzen Ihres Passwortes ist abgelaufen, bitte probieren Sie es erneut"
+ RESET_PASSWORD_RESET: "Das Passwort wurde zurückgesetzt"
+ RESET_INVALID_LINK: "Der Link zum Zurücksetzen Ihres Passwortes ist ungültig, bitte probieren Sie es erneut"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Anweisungen zum Zurücksetzen des Passwortes wurden an %s gesendet"
+ FORGOT_FAILED_TO_EMAIL: "Anweisungen zum Zurücksetzen des Passwortes konnten nicht versendet werden, bitte probieren Sie es später erneut"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Das Passwort für %s kann nicht geändert werden, da keine E-Mail-Adresse hinterlegt ist"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Es existiert kein Benutzer mit dem Namen %s"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Passwort konnte nicht zurückgesetzt werden, da diese Seite nicht zum Versenden von E-Mails konfiguriert worden ist"
+ FORGOT_EMAIL_SUBJECT: "Zurücksetzen des Passwortes von %s"
+ FORGOT_EMAIL_BODY: "
Passwort zurücksetzen
Hallo %1$s,
Auf %4$s wurde die Zurücksetzung Ihres Passwortes angefordert.
Alternativ können Sie auch die folgende Adresse in die Adresszeile Ihres Browsers kopieren:
%2$s
Viele Grüße,
%3$s
"
+ MANAGE_PAGES: "Seiten verwalten"
+ CONFIGURATION: "Einstellungen"
+ PAGES: "Seiten"
+ PLUGINS: "Plugins"
+ PLUGIN: "Plugin"
+ THEMES: "Themes"
+ LOGOUT: "Abmelden"
+ BACK: "Zurück"
+ NEXT: "Nächste"
+ PREVIOUS: "Vorherige"
+ ADD_PAGE: "Seite hinzufügen"
+ ADD_MODULAR: "Modulare Seite hinzufügen"
+ MOVE: "Verschieben"
+ DELETE: "Löschen"
+ UNSET: "Zurücksetzen"
+ VIEW: "Anzeigen"
+ SAVE: "Speichern"
+ NORMAL: "Normal"
+ EXPERT: "Expertenansicht"
+ EXPAND_ALL: "Alle ausklappen"
+ COLLAPSE_ALL: "Alle einklappen"
+ ERROR: "Fehler"
+ CLOSE: "Schließen"
+ CANCEL: "Abbrechen"
+ CONTINUE: "Weiter"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Bestätigung erforderlich"
+ MODAL_CHANGED_DETECTED_TITLE: "Änderungen erkannt"
+ MODAL_CHANGED_DETECTED_DESC: "Einige Änderungen wurden noch nicht gespeichert. Wollen Sie diese Seite wirklich verlassen?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Bestätigung erforderlich"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Wollen Sie diese Datei wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden."
+ ADD_FILTERS: "Filter hinzufügen"
+ SEARCH_PAGES: "Seiten durchsuchen"
+ VERSION: "Version"
+ WAS_MADE_WITH: "Erstellt mit"
+ BY: "Von"
+ UPDATE_THEME: "Theme aktualisieren"
+ UPDATE_PLUGIN: "Plugins aktualisieren"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "dieses Themes ist verfügbar"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "dieses Plugins ist verfügbar"
+ AUTHOR: "Autor"
+ HOMEPAGE: "Homepage"
+ DEMO: "Demo"
+ BUG_TRACKER: "Bug-Tracker"
+ KEYWORDS: "Schlagwörter"
+ LICENSE: "Lizenz"
+ DESCRIPTION: "Beschreibung"
+ README: "Readme"
+ REMOVE_THEME: "Theme löschen"
+ INSTALL_THEME: "Theme installieren"
+ THEME: "Theme"
+ BACK_TO_THEMES: "Zurück zu den Themes"
+ BACK_TO_PLUGINS: "Zurück zu den Plugins"
+ CHECK_FOR_UPDATES: "Updates suchen"
+ ADD: "Hinzufügen"
+ CLEAR_CACHE: "Cache leeren"
+ CLEAR_CACHE_ALL_CACHE: "Alle Caches"
+ CLEAR_CACHE_ASSETS_ONLY: "Nur Assets"
+ CLEAR_CACHE_IMAGES_ONLY: "Nur Bilder"
+ CLEAR_CACHE_CACHE_ONLY: "Nur Cache"
+ CLEAR_CACHE_TMP_ONLY: "nur temporär"
+ DASHBOARD: "Übersicht"
+ UPDATES_AVAILABLE: "Updates verfügbar"
+ DAYS: "Tage"
+ UPDATE: "Aktualisieren"
+ BACKUP: "Sicherung"
+ BACKUPS: "Sicherungen"
+ BACKUP_NOW: "Sicherung jetzt erstellen"
+ BACKUPS_STATS: "Sicherungsstatistiken"
+ BACKUPS_HISTORY: "Sicherungsverlauf"
+ BACKUPS_PROFILES: "Sicherungsprofile"
+ BACKUPS_COUNT: "Anzahl an Sicherungen"
+ BACKUPS_PROFILES_COUNT: "Anzahl der Profile"
+ BACKUPS_TOTAL_SIZE: "Belegter Speicherplatz"
+ BACKUPS_NEWEST: "Neuste Sicherung"
+ BACKUPS_OLDEST: "Älteste Sicherung"
+ BACKUPS_PURGE: "Bereinigen"
+ BACKUPS_NOT_GENERATED: "Bisher wurden keine Backups generiert..."
+ BACKUPS_PURGE_NUMBER: "Sie nutzen %s von insgesamt %s möglichen Backups"
+ BACKUPS_PURGE_TIME: "%s Tage an Sicherungen übrig"
+ BACKUPS_PURGE_SPACE: "%s von %s verwendet"
+ BACKUP_DELETED: "Backup erfolgreich gelöscht"
+ BACKUP_NOT_FOUND: "Sicherung wurde nicht gefunden"
+ BACKUP_DATE: "Sicherungsdatum"
+ STATISTICS: "Statistiken"
+ TODAY: "Heute"
+ WEEK: "Woche"
+ MONTH: "Monat"
+ LATEST_PAGE_UPDATES: "Zuletzt bearbeitete Seiten"
+ MAINTENANCE: "Wartung"
+ UPDATED: "Aktualisiert"
+ MON: "Mo"
+ TUE: "Di"
+ WED: "Mi"
+ THU: "Do"
+ FRI: "Fr"
+ SAT: "Sa"
+ SUN: "So"
+ COPY: "Kopieren"
+ EDIT: "Bearbeiten"
+ CREATE: "Erstellen"
+ GRAV_ADMIN: "Grav-Admin"
+ GRAV_OFFICIAL_PLUGIN: "Offizielles Grav Plugin"
+ GRAV_OFFICIAL_THEME: "Offizielles Grav Theme"
+ PLUGIN_SYMBOLICALLY_LINKED: "Dieses Plugin basiert auf einer symbolischen Verknüpfung. Updates werden daher nicht erkannt."
+ THEME_SYMBOLICALLY_LINKED: "Dieses Theme basiert auf einer symbolischen Verknüpfung. Updates werden daher nicht erkannt."
+ REMOVE_PLUGIN: "Plugin entfernen"
+ INSTALL_PLUGIN: "Plugin installieren"
+ AVAILABLE: "Verfügbar"
+ INSTALLED: "Installiert"
+ INSTALL: "Installieren"
+ ACTIVE_THEME: "Ausgewähltes Theme"
+ SWITCHING_TO: "Wechseln zu"
+ SWITCHING_TO_DESCRIPTION: "Durch das Wechseln des Themes kann nicht garantiert werden, dass das Layout aller Seiten unterstützt wird. Daher können beim Aufrufen der Seiten Fehler entstehen."
+ SWITCHING_TO_CONFIRMATION: "Möchten Sie fortfahren und zum Theme wechseln"
+ CREATE_NEW_USER: "Neuen Benutzer erstellen"
+ REMOVE_USER: "Benutzer entfernen"
+ ACCESS_DENIED: "Zugriff verweigert"
+ ACCOUNT_NOT_ADMIN: "Ihr Account verfügt über keine Administrationsberechtigungen"
+ PHP_INFO: "PHP-Info"
+ INSTALLER: "Installationsprogramm"
+ AVAILABLE_THEMES: "Verfügbare Themes"
+ AVAILABLE_PLUGINS: "Verfügbare Plugins"
+ INSTALLED_THEMES: "Installierte Themes"
+ INSTALLED_PLUGINS: "Installierte Plugins"
+ BROWSE_ERROR_LOGS: "Error Logs anzeigen"
+ SITE: "Site"
+ INFO: "Info"
+ SYSTEM: "System"
+ USER: "Benutzer"
+ ADD_ACCOUNT: "Benutzer hinzufügen"
+ SWITCH_LANGUAGE: "Sprache wechseln"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Plugin erfolgreich aktiviert"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Plugin erfolgreich deaktiviert"
+ SUCCESSFULLY_CHANGED_THEME: "Standard Theme erfolgreich geändert"
+ INSTALLATION_FAILED: "Installation fehlgeschlagen"
+ INSTALLATION_SUCCESSFUL: "Installation erfolgreich"
+ UNINSTALL_FAILED: "Deinstallation fehlgeschlagen"
+ UNINSTALL_SUCCESSFUL: "Deinstallation erfolgreich"
+ SUCCESSFULLY_SAVED: "Speichern erfolgreich"
+ SUCCESSFULLY_COPIED: "Kopieren erfolgreich"
+ REORDERING_WAS_SUCCESSFUL: "Umsortieren war erfolgreich"
+ SUCCESSFULLY_DELETED: "Erfolgreich gelöscht"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Sprache erfolgreich gewechselt"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Sie haben unzureichende Berechtigungen für diese Aktion"
+ CACHE_CLEARED: "Cache geleert"
+ METHOD: "Methode"
+ ERROR_CLEARING_CACHE: "Fehler beim leeren des Cache"
+ AN_ERROR_OCCURRED: "Ein Fehler ist aufgetreten"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Ihr Backup steht zum Download bereit"
+ DOWNLOAD_BACKUP: "Backup herunterladen"
+ PAGES_FILTERED: "Seiten gefiltert"
+ NO_PAGE_FOUND: "Keine Seite gefunden"
+ INVALID_PARAMETERS: "Ungültige Eingabe"
+ NO_FILES_SENT: "Keine Dateien übertragen"
+ EXCEEDED_FILESIZE_LIMIT: "Dateigrößenbeschränkung aus PHP-Konfiguration überschritten"
+ EXCEEDED_POSTMAX_LIMIT: "PHP-Einstellung post_max_size überschritten"
+ UNKNOWN_ERRORS: "Unbekannte Fehler"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Dateigrößenbeschränkung in Grav-Konfiguration überschritten"
+ UNSUPPORTED_FILE_TYPE: "Dateityp nicht unterstützt"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Hochgeladene Datei konnte nicht verschoben werden."
+ FILE_UPLOADED_SUCCESSFULLY: "Datei erfolgreich hochgeladen"
+ FILE_DELETED: "Datei gelöscht"
+ FILE_COULD_NOT_BE_DELETED: "Datei konnte nicht gelöscht werden"
+ FILE_NOT_FOUND: "Datei nicht gefunden"
+ NO_FILE_FOUND: "Keine Datei gefunden"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav wurde erfolgreich aktualisiert auf"
+ GRAV_UPDATE_FAILED: "Grav Update fehlgeschlagen"
+ EVERYTHING_UPDATED: "Alles aktualisiert"
+ UPDATES_FAILED: "Updates fehlgeschlagen"
+ AVATAR_BY: "Avatar von"
+ AVATAR_UPLOAD_OWN: "Oder laden Sie Ihr eigenes hoch..."
+ LAST_BACKUP: "Letztes Backup"
+ FULL_NAME: "Voller Name"
+ USERNAME: "Benutzername"
+ EMAIL: "E-Mail"
+ USERNAME_EMAIL: "Benutzername oder E-Mail"
+ PASSWORD: "Passwort"
+ PASSWORD_CONFIRM: "Passwort bestätigen"
+ TITLE: "Titel"
+ LANGUAGE: "Sprache"
+ ACCOUNT: "Benutzer"
+ EMAIL_VALIDATION_MESSAGE: "Muss eine gültige E-Mail Adresse sein"
+ PASSWORD_VALIDATION_MESSAGE: "Das Passwort muss mindestens eine Zahl, einen Groß- und einen Kleinbuchstaben enthalten sowie mindestens 8 Zeichen lang sein."
+ LANGUAGE_HELP: "Bevorzugte Sprache einstellen"
+ MEDIA: "Medien"
+ DEFAULTS: "Standards"
+ SITE_TITLE: "Website Titel"
+ SITE_TITLE_PLACEHOLDER: "Titel der Website"
+ SITE_TITLE_HELP: "Titel der Site. Wird häufig von Themes verwendet."
+ SITE_DEFAULT_LANG: "Standardsprache"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Standardsprache die im Theme Tag benutzt werden soll"
+ SITE_DEFAULT_LANG_HELP: "Standardsprache die im Theme Tag benutzt werden soll"
+ DEFAULT_AUTHOR: "Hauptautor"
+ DEFAULT_AUTHOR_HELP: "Name des Hauptautors, häufig verwendet in Themes und Inhalten"
+ DEFAULT_EMAIL: "Standard E-Mail Adresse"
+ DEFAULT_EMAIL_HELP: "Standard E-Mail Adresse, die in Plugins und Themes verwendet wird"
+ TAXONOMY_TYPES: "Tag-Typen"
+ TAXONOMY_TYPES_HELP: "Wenn sie verschiedene Tag-Typen verwenden wollen, müssen Sie hier die verschiedenen Typen angeben."
+ PAGE_SUMMARY: "Seitenzusammenfassung"
+ ENABLED: "Aktiviert"
+ ENABLED_HELP: "Aktiviert die Seitenzusammenfasung (die Seitenzusammenfassung entspricht dem Inhalt der Seite)"
+ 'YES': "Ja"
+ 'NO': "Nein"
+ SUMMARY_SIZE: "Zusammenfassungslänge"
+ SUMMARY_SIZE_HELP: "Länge der Zusammenfassung in Buchstaben"
+ FORMAT: "Format"
+ FORMAT_HELP: "kurz = Kürzung der Zusammenfassung bis zum Trennzeichen oder der Zusammenfassungslänge; lang = Trennzeichen wird ignoriert"
+ SHORT: "Kurz"
+ LONG: "Lang"
+ DELIMITER: "Trennzeichen"
+ DELIMITER_HELP: "Das Trennzeichen für die Zusammenfassung (Standard '===')"
+ METADATA: "Metadaten"
+ METADATA_HELP: "Standardmetadaten, die auf jeder Seite angezeigt werden, es sei denn sie werden von einer Seite überschrieben"
+ NAME: "Name"
+ CONTENT: "Inhalt"
+ SIZE: "Größe"
+ ACTION: "Aktion"
+ REDIRECTS_AND_ROUTES: "Weiterleitungen & Routen"
+ CUSTOM_REDIRECTS: "Eigene Weiterleitungen"
+ CUSTOM_REDIRECTS_HELP: "Routen, die auf andere Seiten weiterleiten. Standard Regex Ersetzungen sind erlaubt"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/dein/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/deine/umleitung"
+ CUSTOM_ROUTES: "Eigene Routen"
+ CUSTOM_ROUTES_HELP: "Routen, die auf andere Seiten verweisen. Standard Regex Ersetzungen sind erlaubt"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/dein/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/deine/route"
+ FILE_STREAMS: "Datei Streams"
+ DEFAULT: "Standard"
+ PAGE_MEDIA: "Seitenmedien"
+ OPTIONS: "Optionen"
+ PUBLISHED: "Veröffentlicht"
+ PUBLISHED_HELP: "Standardmäßig ist eine Seite veröffentlicht, es sei denn sie wird explizit auf nicht veröffentlicht gesetzt, das Veröffentlichungsdatum liegt in der Zukunft oder das Ablaufdatum wurde erreicht."
+ DATE: "Datum"
+ DATE_HELP: "Die Datumsangabe erlaubt es diese Seite mit einem Datum zu versehen."
+ PUBLISHED_DATE: "Veröffentlichungsdatum"
+ PUBLISHED_DATE_HELP: "Datum ab dem die Seite automatisch veröffentlicht wird."
+ UNPUBLISHED_DATE: "Ablaufdatum"
+ UNPUBLISHED_DATE_HELP: "Datum ab dem die Veröffentlichung der Seite zurückgenommen wird."
+ ROBOTS: "Robots"
+ TAXONOMIES: "Tags"
+ TAXONOMY: "Tag"
+ ADVANCED: "Erweitert"
+ SETTINGS: "Einstellungen"
+ FOLDER_NUMERIC_PREFIX: "Numerischer Ordnerprefix"
+ FOLDER_NUMERIC_PREFIX_HELP: "Numerischer Prefix der die Reihenfolge und Sichtbarkeit der Seiten beeinflusst"
+ FOLDER_NAME: "Ordnername"
+ FOLDER_NAME_HELP: "Name des Ordners, der für diese Seite angelegt werden sollen"
+ PARENT: "Übergeordnet"
+ DEFAULT_OPTION_ROOT: "- Ursprung -"
+ DEFAULT_OPTION_SELECT: "- Auswählen -"
+ DISPLAY_TEMPLATE: "Template anzeigen"
+ DISPLAY_TEMPLATE_HELP: "Der Seitentyp der zur Wahl des richtigen Twig Templates verwendet wird."
+ BODY_CLASSES: "Body CSS Klassen"
+ ORDERING: "Sortierung"
+ PAGE_ORDER: "Seitensortierung"
+ OVERRIDES: "Überschreibungen"
+ MENU: "Menü"
+ MENU_HELP: "Beschriftung zur Anzeige im Menu. Wenn nicht gesetzt, wird der Titel als Standard genutzt."
+ SLUG: "Slug"
+ SLUG_HELP: "Der Slug bestimmt den Namen der Seite innerhalb der URL."
+ SLUG_VALIDATE_MESSAGE: "Ein Slug darf nur aus Kleinbuchstaben und Bindestrichen bestehen"
+ PROCESS: "Verarbeitung"
+ PROCESS_HELP: "Steuert die Verarbeitung einer Seite. Sollte pro Seite und nicht global gesetzt werden."
+ DEFAULT_CHILD_TYPE: "Standardtyp für Unterseiten"
+ USE_GLOBAL: "Globale Einstellungen verwenden"
+ ROUTABLE: "Aufrufbar"
+ ROUTABLE_HELP: "Ob diese Seite mit einer URL aufgerufen werden kann"
+ CACHING: "Caching"
+ VISIBLE: "Sichtbar"
+ VISIBLE_HELP: "Steuert die Sichtbarkeit einer Seite im Menu."
+ DISABLED: "Deaktiviert"
+ ITEMS: "Elemente"
+ ORDER_BY: "Sortieren nach"
+ ORDER: "Sortierung"
+ FOLDER: "Ordner"
+ ASCENDING: "Aufsteigend"
+ DESCENDING: "Absteigend"
+ ADD_MODULAR_CONTENT: "Modularen Inhalt hinzufügen"
+ PAGE_TITLE: "Seitentitel"
+ PAGE_TITLE_HELP: "Titel der Seite"
+ PAGE: "Seite"
+ MODULAR_TEMPLATE: "Modulares Template"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Dateiname"
+ PARENT_PAGE: "Übergeordnete Seite"
+ HOME_PAGE: "Startseite"
+ HOME_PAGE_HELP: "Seite die von Grav als Startseite genutzt werden soll"
+ DEFAULT_THEME: "Standard Theme"
+ DEFAULT_THEME_HELP: "Setzt den Standard Theme von Grav (Standard ist Antimatter)"
+ TIMEZONE: "Zeitzone"
+ TIMEZONE_HELP: "Überschreibt die Zeitzone des Servers"
+ SHORT_DATE_FORMAT: "Kurzes Datumsformat"
+ SHORT_DATE_FORMAT_HELP: "Setzt das von Themes genutzte Kurzdatumsformat"
+ LONG_DATE_FORMAT: "Langes Datumsformat"
+ LONG_DATE_FORMAT_HELP: "Setzt das von Themes genutzte Langdatumsformat"
+ DEFAULT_ORDERING: "Standard Sortierung"
+ DEFAULT_ORDERING_HELP: "Seiten in einer Liste werden in der Standard Sortierung angezeigt, falls diese nicht überschrieben wird."
+ DEFAULT_ORDERING_DEFAULT: "Standard - basierend auf dem Ordnernamen"
+ DEFAULT_ORDERING_FOLDER: "Ordner - basierend auf dem Ordnernamen ohne Prefix"
+ DEFAULT_ORDERING_TITLE: "Titel - basieren auf dem Seitentitel"
+ DEFAULT_ORDERING_DATE: "Datum - basierend auf dem Datum der Seite"
+ DEFAULT_ORDER_DIRECTION: "Standard Sortierrichtung"
+ DEFAULT_ORDER_DIRECTION_HELP: "Sortierrichtung von Seiten in einer Liste"
+ DEFAULT_PAGE_COUNT: "Standard Seitenzahl"
+ DEFAULT_PAGE_COUNT_HELP: "Maximale Anzahl von Seiten in einer Liste"
+ DATE_BASED_PUBLISHING: "Datumsbasierte Veröffentlichungen"
+ DATE_BASED_PUBLISHING_HELP: "Seiten mit Veröffentlichungs- und Ablaufdatum automatisch veröffentlichen oder zurückziehen"
+ EVENTS: "Ereignisse"
+ EVENTS_HELP: "Von Grav gesteuerte Ereignisse aktivieren. Ein Deaktivieren kann Plugins in ihrer Funktionsweise stören."
+ REDIRECT_DEFAULT_ROUTE: "Weiterleiten auf Standardroute"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Automatisches Weiterleiten auf die Route einer Seite"
+ LANGUAGES: "Sprachen"
+ SUPPORTED: "Unterstützt"
+ SUPPORTED_HELP: "Durch Kommata getrennte Liste mit 2-stelligen Sprachcodes (zum Beispiel 'en,fr,de')"
+ TRANSLATIONS_ENABLED: "Übersetzungen aktivieren"
+ TRANSLATIONS_ENABLED_HELP: "Aktiviert Übersetzungen in Grav, Plugins und Erweiterungen"
+ TRANSLATIONS_FALLBACK: "Fallbacksprache"
+ TRANSLATIONS_FALLBACK_HELP: "Falls Übersetzungen in einer Sprache nicht vorhanden sind, wird auf diese Sprache zurückgegriffen"
+ ACTIVE_LANGUAGE_IN_SESSION: "Aktive Sprache in Session speichern"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Speichert die aktive Sprache in der Session"
+ HTTP_HEADERS: "HTTP-Header"
+ EXPIRES: "Läuft ab"
+ EXPIRES_HELP: "Ändert den Expires-Header (Cache-Ablaufdatum). Angabe in Sekunden"
+ CACHE_CONTROL: "HTTP-Cache-Control"
+ CACHE_CONTROL_HELP: "Muss auf einen validen Cache-Control-Wert gesetzt werden, wie zum Beispiel 'no-cache, no-store, must-revalidate\""
+ LAST_MODIFIED: "Zuletzt geändert"
+ LAST_MODIFIED_HELP: "Setzt das Datum der letzten Änderung um Caching zu optimieren"
+ ETAG: "ETag"
+ ETAG_HELP: "Setzt den ETag-Header um Änderungen der Seite für Proxies erkenntlich zu machen"
+ VARY_ACCEPT_ENCODING: "Vary Accept Encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Setzt den `Vary: Accept Encoding`-Header um Proxies und CDNs zu optimieren"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Markdown extra"
+ MARKDOWN_EXTRA_HELP: "Aktiviert Markdown Extra Unterstützung - https://michelf.ca/projects/php-markdown/extra/"
+ AUTO_LINE_BREAKS: "Automatische Zeilenumbrüche"
+ AUTO_LINE_BREAKS_HELP: "Aktiviert Unterstützung für automatische Zeilenumbrüche in Markdown"
+ AUTO_URL_LINKS: "URLs zu Links verwandeln"
+ AUTO_URL_LINKS_HELP: "Verwandelt jede URL in einen HTML-Link"
+ ESCAPE_MARKUP: "HTML Ausgabe unterdrücken"
+ ESCAPE_MARKUP_HELP: "Ersetzt Markup-Tags durch HTML-Zeichen"
+ CACHING_HELP: "Globaler an/aus Schalter um Caching in Grav zu aktivieren/deaktivieren"
+ CACHE_CHECK_METHOD: "Cacheprüfungsmethode"
+ CACHE_CHECK_METHOD_HELP: "Methode die Grav verwendet um den Cache zu prüfen."
+ CACHE_DRIVER: "Cache-Treiber"
+ CACHE_DRIVER_HELP: "Cache-Treiber den Grav verwendet um Dateien vorzuhalten. 'Automatisch' versucht selbstständig den besten Treiber zu ermitteln."
+ CACHE_PREFIX: "Cache-Prefix"
+ CACHE_PREFIX_HELP: "Cache-Prefix der verwendet wird um Dateien zu cachen. Sollte nicht verändert werden, wenn man nicht genau weiß, was man tut."
+ CACHE_PREFIX_PLACEHOLDER: "Abgeleitet von der Basis-URL (überschreiben durch einen zufälligen Text)"
+ CACHE_PURGE_JOB: "Geplante Bereinigung ausführen"
+ CACHE_PURGE_JOB_HELP: "Mit dem Zeitplaner können Sie die alten Ordner für den Cache der Doctrine-Datei mit diesem Job regelmäßig löschen"
+ CACHE_CLEAR_JOB: "Geplante Bereinigung ausführen"
+ CACHE_CLEAR_JOB_HELP: "Mit dem Scheduler können Sie den Grav-Cache periodisch löschen"
+ CACHE_JOB_TYPE: "Cache Job Typ"
+ CACHE_PURGE: "Alten Cache bereinigen"
+ LIFETIME: "Cache-Lebensdauer"
+ LIFETIME_HELP: "Setzt die Dauer des Caches in Sekunden. 0 = unendlich"
+ GZIP_COMPRESSION: "Gzip-Komprimierung"
+ GZIP_COMPRESSION_HELP: "Aktiviert Gzip-Komprimierung um Grav schneller an Browser senden zu können."
+ TWIG_TEMPLATING: "Twig Templates"
+ TWIG_CACHING: "Twig Caching"
+ TWIG_CACHING_HELP: "Twig Cache-Einstellungen. Sollte aktiviert bleiben um die beste Performance zu gewährleisten."
+ TWIG_DEBUG: "Twig debuggen"
+ TWIG_DEBUG_HELP: "Deaktiviert die Twig-Debug-Extension"
+ DETECT_CHANGES: "Änderungen erkennen"
+ DETECT_CHANGES_HELP: "Twig erkennt automatisch, wenn Themes geändert werden und baut den Cache neu auf"
+ AUTOESCAPE_VARIABLES: "Variablen automatisch escapen"
+ AUTOESCAPE_VARIABLES_HELP: "Alle Veriablen escapen. Ihre Seite könnte dadurch nicht korrekt angezeigt werden"
+ ASSETS: "Assets"
+ CSS_PIPELINE: "CSS Pipeline"
+ CSS_PIPELINE_HELP: "Die CSS Pipeline fasst alle Ihre CSS Dateien in einer einzigen Datei zusammen"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Externe CSS-Dateien mit in die Pipeline aufnehmen"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Externe Resourcen haben evtl. relative Pfadangaben und sollten deshalb nicht mit in die Pipeline aufgenommen werden"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "CSS Pipeline zuerst"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Führt die CSS Pipeline vor ausgeschlossen CSS-Verweisen aus"
+ CSS_MINIFY: "CSS minifizieren"
+ CSS_MINIFY_HELP: "Komprimiert ihre CSS Dateien nach dem pipelining"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "CSS minify Windows"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Verwendet eine andere minify Version, die auf Windows-Betriebssystemen besser funktioniert"
+ CSS_REWRITE: "CSS Umschreiben"
+ CSS_REWRITE_HELP: "Ersetze alle relativen CSS URLs beim pipelining"
+ JAVASCRIPT_PIPELINE: "Javascript Pipeline"
+ JAVASCRIPT_PIPELINE_HELP: "Kombiniert alle JavaScript Dateien zu einer"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Externe Javascript-Dateien mit in die Pipeline aufnehmen"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Externe Resourcen haben evtl. relative Pfadangaben und sollten deshalb nicht mit in die Pipeline aufgenommen werden"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Javascript Pipeline zuerst"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Bindet zuerst die Pipline und dann die ausgenommenen Skripte ein"
+ JAVASCRIPT_MINIFY: "JavaScript minifizieren"
+ JAVASCRIPT_MINIFY_HELP: "Komprimiert die JavaScript Dateien nach dem pipelining"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Zeitstempel für Assets aktivieren"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Aktviert die Zeitstempel für Assets"
+ COLLECTIONS: "Sammlungen"
+ ERROR_HANDLER: "Fehlerbehandlung"
+ DISPLAY_ERRORS: "Fehler Anzeigen"
+ DISPLAY_ERRORS_HELP: "Volle Backtrace-Fehler-Seite anzeigen"
+ LOG_ERRORS: "Fehler protokollieren"
+ LOG_ERRORS_HELP: "Fehler im /logs Ordner speichern"
+ LOG_HANDLER: "Log-Handler"
+ LOG_HANDLER_HELP: "Ausgabeort von Logs"
+ DEBUGGER: "Debugger"
+ DEBUGGER_HELP: "Aktiviert den Grav Debugger und die folgenden Einstellungen"
+ DEBUG_TWIG: "Twig debuggen"
+ DEBUG_TWIG_HELP: "Twig Templates debuggen"
+ SHUTDOWN_CLOSE_CONNECTION: "Verbindung trennen"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Trennt die Verbindung vor dem Aufruf von onShutdown(). Deaktivieren für Debugging"
+ DEFAULT_IMAGE_QUALITY: "Standard Bildqualität"
+ DEFAULT_IMAGE_QUALITY_HELP: "Standardbildqualität beim Speichern von Bildern (85%)"
+ CACHE_ALL: "Alle Bilder cachen"
+ CACHE_ALL_HELP: "Alle Bilder, auch ohne Bearbeitung, im Grav Cache ablegen"
+ IMAGES_DEBUG: "Bild Debug Wasserzeichen"
+ IMAGES_DEBUG_HELP: "Wasserzeichen mit der Auflösung der Bilder anzeigen um Retina-Displays zu testen"
+ IMAGES_SEOFRIENDLY: "SEO freundliche Bildnamen"
+ UPLOAD_LIMIT: "Datei Upload Limit"
+ UPLOAD_LIMIT_HELP: "Maximale Dateigröße in Bytes (0 = ohne Beschränkung)"
+ ENABLE_MEDIA_TIMESTAMP: "Zeitstempel für Mediadateien"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Fügt jedem Medienelement einen Zeitstempel der letzten Bearbeitung hinzu"
+ SESSION: "Sitzung"
+ SESSION_ENABLED_HELP: "Sessions in Grav aktivieren"
+ TIMEOUT: "Zeitüberschreitung"
+ TIMEOUT_HELP: "Session Timeout in Sekunden"
+ SESSION_NAME_HELP: "Name für den Session-Cookie"
+ SESSION_UNIQUENESS: "Primärschlüssel"
+ ABSOLUTE_URLS: "Absolute URLs"
+ ABSOLUTE_URLS_HELP: "Absolute oder Relative Pfadangaben für `base_url`"
+ PARAMETER_SEPARATOR: "Parameter Trennzeichen"
+ PARAMETER_SEPARATOR_HELP: "Trennzeichen für Parameter in der URL"
+ TASK_COMPLETED: "Aufgabe erledigt"
+ EVERYTHING_UP_TO_DATE: "Keine Aktualisierungen verfügbar"
+ UPDATES_ARE_AVAILABLE: "Aktualisierung(en) verfügbar"
+ IS_AVAILABLE_FOR_UPDATE: "ist zur Aktualisierung verfügbar"
+ IS_NOW_AVAILABLE: "ist jetzt verfügbar"
+ CURRENT: "Aktuell"
+ UPDATE_GRAV_NOW: "Grav jetzt aktualisieren"
+ GRAV_SYMBOLICALLY_LINKED: "Grav ist symbolisch Verknüpft und kann daher nicht aktualisiert werden"
+ UPDATING_PLEASE_WAIT: "Aktualisiere, bitte warten…"
+ OF_THIS: "von diesem"
+ OF_YOUR: "von deinem"
+ HAVE_AN_UPDATE_AVAILABLE: "hat ein Update verfügbar"
+ SAVE_AS: "Speichern als"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Sind Sie sicher, dass Sie diese Seite und all deren Kinder löschen wollen? Wenn diese Seite noch in anderen Sprachen vorliegt, werden diese Übersetzungen behalten & müssen separat gelöscht werden. Ansonsten wird die Seite samt Ordner mit allen Unterseiten gelöscht. Diese Aktion kann nicht rückgängig gemacht werden."
+ AND: "und"
+ UPDATE_AVAILABLE: "Aktualisierung verfügbar"
+ METADATA_KEY: "Schlüssel (z.B. 'Stichwort')"
+ METADATA_VALUE: "Wert (z.B. 'Blog, Grav')"
+ USERNAME_HELP: "Der Nutzername sollte zwischen 3 bis 16 Zeichen lang sein und darf Kleinbuchstaben, Zahlen, Unterstrichen und Bindestrichen enthalten. Großbuchstaben, Leerzeichen und Sonderzeichen sind nicht erlaubt"
+ FULLY_UPDATED: "Vollständig aktualisiert"
+ SAVE_LOCATION: "Gespeichert unter"
+ PAGE_FILE: "Seiten-Template"
+ PAGE_FILE_HELP: "Seiten-Template Dateiname, und als Standard das Anzeige-Template für diese Seite"
+ NO_USER_ACCOUNTS: "Keine Benutzerkonten gefunden, bitte erstellen Sie zuerst eines..."
+ NO_USER_EXISTS: "Für dieses Konto existiert kein lokaler Benutzer, es kann nicht gespeichert werden..."
+ REDIRECT_TRAILING_SLASH: "Weiterleiten von nachgestellten '/'"
+ REDIRECT_TRAILING_SLASH_HELP: "Eine 301 Weiterleitung durchführen anstatt nachgestellte '/' transparent zu verarbeiten."
+ DEFAULT_DATE_FORMAT: "Seiten-Datumsformat"
+ DEFAULT_DATE_FORMAT_HELP: "Das von Grav für die Seite verwendete Datumsformat. Standardmässig versucht Grav das Datum anhand Ihrer Herkunft festzulegen. Sie können das Datumsformat mithilfe der PHP Syntax festlegen (z.B. Y-m-d-H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Automatisch vorschlagen"
+ IGNORE_FILES: "Dateien ignorieren"
+ IGNORE_FILES_HELP: "Dateien die beim Verarbeiten von Seiten ignoriert werden sollen"
+ IGNORE_FOLDERS: "Ignoriere Ordner"
+ IGNORE_FOLDERS_HELP: "Verzeichnisse die beim Verarbeiten von Seiten ignoriert werden sollen"
+ HIDE_EMPTY_FOLDERS: "Leere Ordner verstecken"
+ HIDE_EMPTY_FOLDERS_HELP: "Wenn der Ordner keine .md-Datei hat, sollte er in der Navigation versteckt werden und nicht routbar sein"
+ HTTP_ACCEPT_LANGUAGE: "Sprache vom Browser übernehmen"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Sie können sich entscheiden die Sprache automatisch über den 'http_accept_language' Header einzustellen"
+ OVERRIDE_LOCALE: "Spracheinstellung überschreiben"
+ OVERRIDE_LOCALE_HELP: "Lokale PHP Spracheinstellung mit aktueller Sprache überschreiben"
+ REDIRECT: "Seiten-Weiterleitung"
+ REDIRECT_HELP: "Geben Sie eine Seiten-Adresse oder externe URL ein, auf welche diese Seite weiterleiten soll - z.B. '/eine/adresse' oder 'http://www.seite.de'"
+ PLUGIN_STATUS: "Plugin Status"
+ INCLUDE_DEFAULT_LANG: "Standardsprache hinzufügen"
+ INCLUDE_DEFAULT_LANG_HELP: "Dies wird alle URLs der Standardsprache um die Sprache ergänzen z.B. '/en/blog/post' oder '/de/blog/post'"
+ ALLOW_URL_TAXONOMY_FILTERS: "URL Kategoriefilter"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Seiten-basierende Sammlungen erlauben das Filtern via '/taxonomy:value'."
+ REDIRECT_DEFAULT_CODE: "Standard Weiterleitungscode"
+ REDIRECT_DEFAULT_CODE_HELP: "HTTP Statuscode für Weiterleitungen"
+ IGNORE_HIDDEN: "Versteckte ignorieren"
+ IGNORE_HIDDEN_HELP: "Alle Dateien und Ordner ignorieren, die mit einem Punkt beginnen"
+ WRAPPED_SITE: "Eingefasste Seite"
+ WRAPPED_SITE_HELP: "Damit Themes/Plugins wissen ob Grav in eine andere Plattform eingebunden ist"
+ FALLBACK_TYPES: "Zugelassene Fallback-Typen"
+ FALLBACK_TYPES_HELP: "Erlaubte Datei-Typen auf die über Seiten-Routen zugegriffen werden kann. Standardmäßig alle unterstützen Media Typen."
+ INLINE_TYPES: "Inline Ersatz Typ"
+ INLINE_TYPES_HELP: "Eine Liste an Datei Typen die Inline angezeigt werden sollte, statt heruntergeladen zu werden"
+ APPEND_URL_EXT: "URL Endung hinzufügen"
+ APPEND_URL_EXT_HELP: "Wird eine eigene Erweiterung zu der URL der Seite hinzufügen. Damit wird Grav nach `..twig` suchen"
+ PAGE_MODES: "Seitenmodus"
+ PAGE_TYPES: "Seitentyp"
+ ACCESS_LEVELS: "Zugriffslevels"
+ GROUPS: "Gruppen"
+ GROUPS_HELP: "Liste aller Gruppen in denen der Benutzer Mitglied ist"
+ ADMIN_ACCESS: "Admin Zugriff"
+ SITE_ACCESS: "Website Zugriff"
+ INVALID_SECURITY_TOKEN: "Ungültiger Sicherheitstoken"
+ ACTIVATE: "Aktivieren"
+ TWIG_UMASK_FIX: "Umask Fix"
+ TWIG_UMASK_FIX_HELP: "Twig erstellt Cache Dateien standardmäßig mit 0755, Fix setzt dass auf 0775"
+ CACHE_PERMS: "Cache Berechtigungen"
+ CACHE_PERMS_HELP: "Standardberechtigungen für den Cache-Ordner. In der Regel 0755 oder 0775 je nach Setup"
+ REMOVE_SUCCESSFUL: "Entfernen erfolgreich"
+ REMOVE_FAILED: "Entfernen fehlgeschlagen"
+ HIDE_HOME_IN_URLS: "Startseiten Adresse in URLs ausblenden"
+ HIDE_HOME_IN_URLS_HELP: "Wird sicherstellen, dass die Standard-Adresse für alle Seiten unterhalb der Startseite nicht auf die Standard-Adresse der Startseite verweisen"
+ TWIG_FIRST: "Twig-Verarbeitung zuerst ausführen"
+ TWIG_FIRST_HELP: "Falls Sie die Seiten-Generierung mittels Twig aktiviert haben, können Sie einstellen, ob diese vor oder nach der Markdown-Verarbeitung geschehen soll"
+ SESSION_SECURE: "Sicher"
+ SESSION_SECURE_HELP: "Wenn aktiviert muss die Kommunikation für Cookies über eine verschlüsselte Verbindung stattfinden. Warnung: Aktivieren Sie diese Option nur auf Seiten, die ausschließlich auf HTTPS laufen"
+ SESSION_HTTPONLY: "Nur HTTP"
+ SESSION_HTTPONLY_HELP: "Wenn aktiv, werden Cookies nur über HTTP genutzt. Eine Änderung per JavaScript ist nicht erlaubt"
+ REVERSE_PROXY: "Reverse Proxy"
+ REVERSE_PROXY_HELP: "Aktivieren Sie dies, wenn sie sich hinter einem Reverse Proxy befinden und Probleme mit URLs und inkorrekten Ports haben"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Ungültiger Frontmatter, speichern nicht möglich"
+ ADD_FOLDER: "Ordner hinzufügen"
+ PROXY_URL: "Proxy-URL"
+ PROXY_URL_HELP: "Geben Sie den Proxy-HOST oder IP und PORT ein"
+ NOTHING_TO_SAVE: "Nichts zu speichern"
+ FILE_ERROR_ADD: "Beim Versuch, die Dateien hinzuzufügen, ist ein Fehler aufgetreten"
+ FILE_ERROR_UPLOAD: "Beim Versuch, die Dateien hochzuladen, ist ein Fehler aufgetreten"
+ FILE_UNSUPPORTED: "Nicht unterstützter Dateityp"
+ ADD_ITEM: "Eintrag hinzufügen"
+ FILE_TOO_LARGE: "Die Datei ist zu groß für den Upload, maximal zulässig sind %s entsprechend Ihrer PHP-Einstellungen. Erhöhen Sie die Einstellung von 'post_max_size'"
+ INSTALLING: "Installiere"
+ LOADING: "Laden..."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Die folgenden Abhängigkeiten müssen zuerst erfüllt sein:"
+ ERROR_INSTALLING_PACKAGES: "Fehler während der Paketinstallation"
+ INSTALLING_DEPENDENCIES: "Installiere Abhängigkeiten…"
+ INSTALLING_PACKAGES: "Installiere Paket(e)…"
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Paket(e) erfolgreich installiert."
+ READY_TO_INSTALL_PACKAGES: "Bereit das/die Paket(e) zu installieren"
+ PACKAGES_NOT_INSTALLED: "Pakete nicht installiert"
+ PACKAGES_NEED_UPDATE: "Pakete bereits installiert, aber zu alt"
+ PACKAGES_SUGGESTED_UPDATE: "Pakete bereits installiert und die Version ist ok, werden aber trotzdem installiert um sie aktuell zu halten"
+ REMOVE_THE: "Entferne %s"
+ CONFIRM_REMOVAL: "Sind sie sicher, dass sie %s löschen möchten?"
+ REMOVED_SUCCESSFULLY: "%s erfolgreich entfernt"
+ ERROR_REMOVING_THE: "Fehler beim Entfernen der %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "Das %s benötigt die folgenden Abhängigkeiten, die nicht von anderen installierten Pakete benötigt werden. Wenn Sie diese nicht verwenden, können Sie direkt hier entfernt werden."
+ READY_TO_UPDATE_PACKAGES: "Bereit das/die Paket(e) zu aktualisieren"
+ ERROR_UPDATING_PACKAGES: "Fehler beim Aktualisieren des/der Pakete(s)"
+ UPDATING_PACKAGES: "Aktualisiere Paket(e) ..."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Paket(e) erfolgreich aktualisiert."
+ UPDATING: "Aktualisiere"
+ GPM_RELEASES: "GPM-Releases"
+ GPM_RELEASES_HELP: "Wählen Sie 'Testbetrieb' um Beta- oder Test-Versionen zu installieren"
+ GPM_METHOD: "Methode um entfernte Inhalte zu laden"
+ GPM_METHOD_HELP: "Wenn auf Auto gestellt, wird Grav feststellen ob PHP fopen Funktion verfügbar ist und diese nutzen, ansonsten cURL. Um die Nutzung einer der beiden Optionen zu erzwingen bitten den Schalter umstellen."
+ GPM_VERIFY_PEER: "Zertifikatsüberprüfung externer Server (SSL)"
+ GPM_VERIFY_PEER_HELP: "Einige Provider scheinen an der Überprüfung des getgrav.org SSL Zertifikates zu scheitern. Dies führt dazu das GPM nicht funktioniert. Ist dies der Fall, hilft vielleicht das abstellen dieser Einstellung"
+ AUTO: "Automatisch"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabil"
+ TESTING: "Testbetrieb"
+ FRONTMATTER_PROCESS_TWIG: "Verarbeite Frontmatter Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Wenn aktiviert können Twig Konfigurationsvariablen im Seiten Frontmatter verwendet werden"
+ FRONTMATTER_IGNORE_FIELDS: "Ignoriere Frontmatter Felder"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Bestimmte Frontmatter Felder können Twig enthalten sollten aber möglicherweise nicht verarbeitet werden, z. B. \"Formulare\""
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Paket %s erfolgreich installiert"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Übergeordnete Sortiereinstellung, Sortierung deaktiviert"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Seite ist nicht sichtbar, Sortierung deaktiviert"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Sortierung via Admin wird nicht unterstützt, weil es mehr als 200 Elemente auf gleicher Ebene gibt"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Die Sortierung ist für diese Seite deaktiviert, weil Numerisches Ordner Präfix nicht aktiviert ist"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "Hinweis: Sie können keine Medien-Dateien hochladen bis die Seite gespeichert ist. Klicken Sie dazu \"Speichern\" oben rechts."
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "Hinweis: Seite muss gespeichert werden, bevor Sie Dateien hochladen können."
+ DROP_FILES_HERE_TO_UPLOAD: "Ziehen Sie Dateien hierauf oder klicken Sie in diesem Bereich"
+ INSERT: "Einfügen"
+ UNDO: "Rückgängigmachen"
+ REDO: "Wiederholen"
+ HEADERS: "Überschriften"
+ BOLD: "Fett gedruckt"
+ ITALIC: "Kursiv"
+ STRIKETHROUGH: "Durchgestrichen"
+ SUMMARY_DELIMITER: "Trennzeichen für Zusammenfassung"
+ LINK: "Link"
+ IMAGE: "Bild"
+ BLOCKQUOTE: "Zitat"
+ UNORDERED_LIST: "Ungeordnete Liste"
+ ORDERED_LIST: "Geordnete Liste"
+ EDITOR: "Editor"
+ PREVIEW: "Vorschau"
+ FULLSCREEN: "Vollbild"
+ MODULAR: "Modular"
+ MODULAR_SETUP: "Modularer Aufbau"
+ NON_ROUTABLE: "Nicht aufrufbar"
+ NON_MODULAR: "Nicht modular"
+ NON_VISIBLE: "Nicht sichtbar"
+ NON_PUBLISHED: "Nicht veröffentlicht"
+ CHARACTERS: "Zeichen"
+ PUBLISHING: "Veröffentlichen"
+ NOTIFICATIONS: "Benachrichtigungen"
+ MEDIA_TYPES: "Medien-Typen"
+ IMAGE_OPTIONS: "Bildoptionen"
+ MIME_TYPE: "MIME-Typ"
+ THUMB: "Vorschaubild"
+ TYPE: "Typ"
+ FILE_EXTENSION: "Dateiendung"
+ LEGEND: "Seitenlegende"
+ MEMCACHE_SERVER: "Memcache Server"
+ MEMCACHE_SERVER_HELP: "Die Memcache-Server-Adresse"
+ MEMCACHE_PORT: "Memcache Port"
+ MEMCACHE_PORT_HELP: "Der Memcache-Server Port"
+ MEMCACHED_SERVER: "Memcached server"
+ MEMCACHED_SERVER_HELP: "Die Memcache-Server-Adresse"
+ MEMCACHED_PORT: "Memcache Port"
+ MEMCACHED_PORT_HELP: "Der Memcache-Server Port"
+ REDIS_SERVER: "Redis server"
+ REDIS_SERVER_HELP: "Die Redis-Server-Adresse"
+ REDIS_PORT: "Redis port"
+ REDIS_PORT_HELP: "Der Redis-Server Port"
+ REDIS_PASSWORD: "Redis Passwort/Geheimnis"
+ ALL: "Alle"
+ FROM: "von"
+ TO: "an"
+ RELEASE_DATE: "Veröffentlichungsdatum"
+ SORT_BY: "Sortieren nach"
+ RESOURCE_FILTER: "Filtere..."
+ FORCE_SSL: "SSL erzwingen"
+ FORCE_SSL_HELP: "Globales SSL erzwingen, wenn aktiviert sendet Grav für eine HTTP Anfrage eine Weiterleitung zur HTTPS-Seite"
+ NEWS_FEED: "Neuigkeiten"
+ EXTERNAL_URL: "Externe URL"
+ SESSION_PATH: "Der Session-Pfad"
+ SESSION_PATH_HELP: "Nur verwenden, wenn Sie eine benutzerdefinierte Base-URL nutzen (rewrite der Site-Domain / Unterordner)"
+ CUSTOM_BASE_URL: "Benutzerdefinierte Base-URL"
+ CUSTOM_BASE_URL_HELP: "Verwenden Sie diese Einstellung, wenn ein Rewrite der Site-Domain durchgeführt oder ein anderer Unterordner als der von Grav verwendete genutzt werden soll. Beispiel: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Kann "%s" nicht außerhalb von Seiten verwenden.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Kann Datei nicht hochladen %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Kann Datei %s nicht nach "%s" verschieben'
+ DROPZONE_CANCEL_UPLOAD: 'Upload abbrechen'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Sind Sie sicher, dass Sie den Upload abbrechen wollen?'
+ DROPZONE_DEFAULT_MESSAGE: 'Ziehen Sie Dateien hierher oder klicken Sie in diesem Bereich'
+ DROPZONE_FALLBACK_MESSAGE: 'Ihr Browser unterstützt Drag und Drop Datei-Uploads nicht.'
+ DROPZONE_FALLBACK_TEXT: 'Bitte nutzen Sie das untenstehende Formular um Dateien wie in alten Zeiten hochzuladen.'
+ DROPZONE_FILE_TOO_BIG: 'Die Datei ist zu groß ({{filesize}}MiB). Maximale Dateigröße: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Sie können Dateien dieses Typs nicht hochladen."
+ DROPZONE_MAX_FILES_EXCEEDED: "Sie können keine weiteren Dateien hochladen."
+ DROPZONE_REMOVE_FILE: "Datei entfernen"
+ DROPZONE_RESPONSE_ERROR: "Server antwortete mit Statuscode {{statusCode}}."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Aktivere Admin Caching"
+ ADMIN_CACHING_HELP: "Caching für den Admin-Bereich kann unabhängig vom Front-End kontrolliert werden"
+ DESTINATION_NOT_SPECIFIED: "Ziel nicht angegeben"
+ UPLOAD_ERR_NO_TMP_DIR: "Ordner für temporäre Dateien fehlt"
+ SESSION_SPLIT: "Geteilte Session"
+ SESSION_SPLIT_HELP: "Unabhängig geteilte Sessions zwischen der Site und anderen Plugins (wie zum Beispiel Admin)"
+ ERROR_FULL_BACKTRACE: "Voller Backtrace Fehler"
+ ERROR_SIMPLE: "Einfacher Fehler"
+ ERROR_SYSTEM: "Systemfehler"
+ IMAGES_AUTO_FIX_ORIENTATION: "Bildausrichtung automatisch beheben"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Bildausrichtung anhand der Exif-Daten automatisch beheben"
+ REDIS_SOCKET: "Redis Socket"
+ REDIS_SOCKET_HELP: "Der Redis Socket"
+ NOT_SET: "Nicht eingestellt"
+ PERMISSIONS: "Zugriffsrechte"
+ NEVER_CACHE_TWIG: "Twig niemals chachen"
+ NEVER_CACHE_TWIG_HELP: "Nur Inhalte zwischenspeichern und Twig für Seiten jedes Mal verarbeiten. Ignoriert die Einstellung twig_first."
+ ALLOW_WEBSERVER_GZIP: "Webserver Gzip erlauben"
+ ALLOW_WEBSERVER_GZIP_HELP: "Ist standardmäßig deaktiviert. Wenn diese Option aktiviert ist, wird die WebServer konfigurierte Gzip/Deflate-Komprimierung verwendet, aber die HTTP-Verbindung wird nicht vor dem onShutDown() Ereignis geschlossen, was ein langsameres laden der Seite bedeutet"
+ OFFLINE_WARNING: "Es kann keine Verbindung zu GPM hergestellt werden"
+ CLEAR_IMAGES_BY_DEFAULT: "Standardmässig wird der image cache gelöscht"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Standardmäßig werden bearbeitete Bilder bei alle Cache-Löschungen gelöscht, dies kann deaktiviert werden"
+ CLI_COMPATIBILITY: "CLI Kompatibilität"
+ CLI_COMPATIBILITY_HELP: "Sorgt dafür, dass nur nicht-flüchtige Cache Treiber verwendet werden (Datei, Redis, Memcache, etc.)"
+ REINSTALL_PLUGIN: "Plugin erneut installieren"
+ REINSTALL_THEME: "Theme erneut installieren"
+ REINSTALL_THE: "%s erneut installieren"
+ CONFIRM_REINSTALL: "Sind sie sicher, dass sie %s erneut installieren möchten?"
+ REINSTALLED_SUCCESSFULLY: "%s erfolgreich erneut installiert"
+ ERROR_REINSTALLING_THE: "Fehler bei der erneuten Installation von %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Paket %s erfolgreich erneut installiert"
+ REINSTALLATION_FAILED: "Erneute Installation fehlgeschlagen"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "Die installierte Version ist nicht die neueste verfügbare Version. Durch Klicken auf Weiter, entfernen Sie die aktuelle Version und installieren Sie die neueste verfügbare Version"
+ TOOLS: "Werkzeuge"
+ DIRECT_INSTALL: "Direkte Installation"
+ NO_PACKAGE_NAME: "Name des Pakets nicht angegeben"
+ PACKAGE_EXTRACTION_FAILED: "Paket konnte nicht ausgepackt werden"
+ NOT_VALID_GRAV_PACKAGE: "Kein gültiges Grav-Paket"
+ NAME_COULD_NOT_BE_DETERMINED: "Name konnte nicht ermittelt werden"
+ CANNOT_OVERWRITE_SYMLINKS: "Symbolische Links können nicht überschrieben werden"
+ ZIP_PACKAGE_NOT_FOUND: "ZIP Archiv wurde nicht gefunden"
+ GPM_OFFICIAL_ONLY: "Nur offizielle GPM Server"
+ GPM_OFFICIAL_ONLY_HELP: "Erlauben Sie direkte Installationen nur aus dem offiziellen GPM-Repository."
+ NO_CHILD_TYPE: "Kein Unterseitentyp für diese Rawroute"
+ SORTABLE_PAGES: "Sortierbare Seiten:"
+ UNSORTABLE_PAGES: "Nicht sortierbare Seiten"
+ ADMIN_SPECIFIC_OVERRIDES: "Administrative Anpassungen"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Sortierung der Unterseiten"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Die Reihenfolge, die vom Admin Plugin verwendet werden soll um Unterseiten in der \"Seiten\" Ansicht anzuzeigen"
+ PWD_PLACEHOLDER: "komplexe Zeichenfolge mindestens 8 Zeichen lang"
+ PWD_REGEX: "Regulärer Ausdruck für Passwörter"
+ PWD_REGEX_HELP: "Standard: Das Passwort muss mindestens eine Zahl, einen Groß- und einen Kleinbuchstaben enthalten sowie mindestens 8 Zeichen lang sein"
+ USERNAME_PLACEHOLDER: "nur Kleinbuchstaben, z.B. 'admin'"
+ USERNAME_REGEX: "Regulärer Ausdruck für Benutzernamen"
+ USERNAME_REGEX_HELP: "Standard: nur Kleinbuchstaben, Ziffern, Bindestriche und Unterstriche. 3 - 16 Zeichen"
+ CONTENT_PADDING: "Abstand um Inhalte"
+ CONTENT_PADDING_HELP: "Abstand um Inhalte aktivieren/deaktivieren um mehr Platz anzubieten"
+ ENABLE_AUTO_METADATA: "Auto-Metadaten aus Exif"
+ ENABLE_AUTO_METADATA_HELP: "Automatische Generierung von Metadaten-Dateien für Bilder mit Exif-Informationen"
+ 2FA_TITLE: "2-Faktor-Authentifizierung"
+ 2FA_INSTRUCTIONS: "##### 2-Faktor-Authentifizierung\nSie haben **2FA** für dieses Konto aktiviert. Bitte benutzen Sie Ihre **2FA** App, um den aktuellen **6-stelligen Code** einzugeben, um den Anmeldevorgang abzuschließen."
+ 2FA_LABEL: "Admin Zugriff"
+ 2FA_FAILED: "Ungültiger 2-Faktor-Authentifizierungscode, bitte versuchen Sie es erneut..."
+ 2FA_ENABLED: "Zwei-Faktor-Authentifizierung aktiviert"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "Zwei-Faktor-Authentifizierung Geheimnis"
+ 2FA_REGENERATE: "Erneuern"
+ FORCE_LOWERCASE_URLS: "Erzwingen von Kleinbuchstaben-URLs"
+ INTL_ENABLED: "Intl Modulintegration"
+ VIEW_SITE_TIP: "Seite anzeigen"
+ TOOLS_DIRECT_INSTALL_TITLE: "Direktinstallation von Grav-Paketen"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Paket mittels \"Direct ZIP Upload\" installieren"
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Paket mittels \"Remote URL Reference\" installieren"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Alternativ können Sie auch eine vollständige URL zu der gezippten Paketdatei angeben um das Paket über eine Fremd-URL zu installieren."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Hochladen und installieren"
+ ROUTE_DEFAULT: "Standardroute"
+ ROUTE_ALIASES: "Routen-Aliase"
+ OPEN_NEW_TAB: "In neuem Tab öffnen"
+ SESSION_INITIALIZE: "Session initialisieren"
+ STRICT_YAML_COMPAT: "YAML Kompatibilität"
+ STRICT_TWIG_COMPAT: "Twig Kompatibilität"
+ SCHEDULER: "Planer"
+ SCHEDULER_INSTALL_INSTRUCTIONS: "Installationsanleitung"
+ SCHEDULER_INSTALLED_READY: "Installiert und bereit"
+ SCHEDULER_CRON_NA: "Cron ist nicht verfügbar"
+ SCHEDULER_NOT_ENABLED: "Nicht aktiviert"
+ SCHEDULER_SETUP: "Planer-Setup"
+ SCHEDULER_STATUS: "Planer-Status"
+ SCHEDULER_RUNAT: "Starten um"
+ SCHEDULER_EMAIL: "E-Mail"
+ SECURITY: "Sicherheit"
+ UPLOADS_DANGEROUS_EXTENSIONS: "Gefährliche Erweiterungen"
+ REPORTS: "Berichte"
+ LOGS: "Logs"
+ BACKUPS_MAX_COUNT: "Maximale Anzahl an Sicherungen"
+ BACKUPS_MAX_RETENTION_TIME: "Maximale Gesamtzeit"
+ BACKUPS_MAX_RETENTION_TIME_APPEND: "in Tagen"
+ BACKUPS_PROFILE_NAME: "Sicherungsname"
+ BACKUPS_PROFILE_ROOT_FOLDER: "Stammverzeichnis"
+ BACKUPS_PROFILE_ROOT_FOLDER_HELP: "Kann ein absoluter Pfad oder ein Stream sein"
+ BACKUPS_PROFILE_EXCLUDE_PATHS: "Pfade ausschließen"
+ BACKUPS_PROFILE_EXCLUDE_PATHS_HELP: "Absolute Pfade zum Ausschließen, einer pro Zeile"
+ BACKUPS_PROFILE_EXCLUDE_FILES: "Dateien ausschließen"
+ BACKUPS_PROFILE_EXCLUDE_FILES_HELP: "Bestimmte Dateien oder Ordner, die ausgeschlossen werden sollen, eine pro Zeile"
+ BACKUPS_PROFILE_SCHEDULE: "Geplanten Job aktivieren"
+ BACKUPS_PROFILE_SCHEDULE_AT: "Geplanten Job ausführen"
+ COMMAND: "Befehl"
+ EXTRA_ARGUMENTS: "Zusätzliche Argumente"
diff --git a/user/plugins/admin/languages/el.yaml b/user/plugins/admin/languages/el.yaml
new file mode 100644
index 0000000..6f18d94
--- /dev/null
+++ b/user/plugins/admin/languages/el.yaml
@@ -0,0 +1,710 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Αυτή είναι δοκιμαστική έκδοση (beta)! Χρησιμοποιήστε την στην παραγωγή με δική σας ευθύνη..."
+ ADMIN_REPORT_ISSUE: "Βρήκατε κάποιο πρόβλημα; Παρακαλείστε να το αναφέρετε στο GitHub."
+ EMAIL_FOOTER: " με την ισχύ του Grav - Το μοντέρνο CMS χωρίς τη χρήση Βάσης Δεδομένων"
+ LOGIN_BTN: "Σύνδεση"
+ LOGIN_BTN_FORGOT: "Το ξέχασα"
+ LOGIN_BTN_RESET: "Επαναφορά συνθηματικού"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Αποστολή οδηγιών επαναφοράς"
+ LOGIN_BTN_CLEAR: "Καθαρισμός Φόρμας"
+ LOGIN_BTN_CREATE_USER: "Δημιουργία χρήστη"
+ LOGIN_LOGGED_IN: "Έχετε συνδεθεί με επιτυχία"
+ LOGIN_FAILED: "Αποτυχία Σύνδεσης"
+ LOGGED_OUT: "Έχετε αποσυνδεθεί"
+ RESET_NEW_PASSWORD: "Παρακαλούμε εισαγάγετε νέο συνθηματικό …"
+ RESET_LINK_EXPIRED: "Ο σύνδεσμος επαναφοράς έχει λήξει, παρακαλώ προσπαθήστε ξανά"
+ RESET_PASSWORD_RESET: "Έχει γίνει επαναφορά του συνθηματικού"
+ RESET_INVALID_LINK: "Ο σύνδεσμος γιά την επαναφορά δεν είναι έγκυρος, παρακαλώ προσπαθήστε πάλι"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Οι οδηγίες για να επαναφέρετε το συνθηματικό σας έχουν σταλεί στη διεύθυνση ηλεκτρονικού σας ταχυδρομείου"
+ FORGOT_FAILED_TO_EMAIL: "Απέτυχε η αποστολή οδηγιών με email, παρακαλώ προσπαθήστε ξανά αργότερα"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Δεν είναι δυνατή η επαναφορά του συνθηματικού για %s, δεν έχει καθοριστεί διεύθυνση ηλεκτρονικού ταχυδρομείου"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Χρήστης με όνομα χρήστη %s δεν υπάρχει"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Δεν είναι δυνατή η επαναφορά του συνθηματικού σας. Αυτός ο ιστότοπος δεν έχει ρυθμιστεί για αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου"
+ FORGOT_EMAIL_SUBJECT: "%s Αίτηση Επαναφοράς Κωδικού Πρόσβασης"
+ FORGOT_EMAIL_BODY: "
Επαναφορά συνθηματικού
Αγαπητέ/ή %1$s,
Έγινε μία αίτηση στις %4$s για επαναφορά του συνθηματικού σας.
Εναλλακτικά, αντιγράψτε την ακόλουθη διεύθυνση URL στη γραμμή διευθύνσεων του προγράμματος περιήγησής σας:
%2$s
< br / > Με εκτίμηση, < br / > < br / >%3$s
"
+ MANAGE_PAGES: "Διαχείριση σελίδων"
+ CONFIGURATION: "Διαμόρφωση"
+ PAGES: "Σελίδες"
+ PLUGINS: "Πρόσθετα"
+ PLUGIN: "Πρόσθετο"
+ THEMES: "Θέματα"
+ LOGOUT: "Αποσύνδεση"
+ BACK: "Επιστροφή"
+ NEXT: "Επόμενο"
+ PREVIOUS: "Προηγούμενο"
+ ADD_PAGE: "Προσθήκη σελίδας"
+ ADD_MODULAR: "Προσθέστε Modular"
+ MOVE: "Μετακίνηση"
+ DELETE: "Διαγραφή"
+ VIEW: "Προβολή"
+ SAVE: "Αποθήκευση"
+ NORMAL: "Κανονικό"
+ EXPERT: "Ειδικός"
+ EXPAND_ALL: "Ανάπτυξη Όλων"
+ COLLAPSE_ALL: "Σύμπτυξη όλων"
+ ERROR: "Σφάλμα"
+ CLOSE: "Κλείσιμο"
+ CANCEL: "Ακύρωση"
+ CONTINUE: "Συνέχεια"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Απαιτείται Επιβεβαίωση"
+ MODAL_CHANGED_DETECTED_TITLE: "Εντοπίστηκαν Αλλαγές"
+ MODAL_CHANGED_DETECTED_DESC: "Έχετε μη αποθηκευμένες αλλαγές. Είστε βέβαιοι ότι θέλετε να φύγετε χωρίς να γίνει αποθήκευση;"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Απαιτείται Επιβεβαίωση"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το αρχείο; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί."
+ ADD_FILTERS: "Προσθήκη φίλτρων"
+ SEARCH_PAGES: "Αναζήτηση στις σελίδες"
+ VERSION: "Έκδοση"
+ WAS_MADE_WITH: "Δημιουργήθηκε με"
+ BY: "Από"
+ UPDATE_THEME: "Ενημέρωση Θέματος"
+ UPDATE_PLUGIN: "Ενημέρωση Προσθέτου"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "αυτού του θέματος είναι τώρα διαθέσιμη"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "αυτού του πρόσθετου είναι τώρα διαθέσιμη"
+ AUTHOR: "Συντάκτης"
+ HOMEPAGE: "Αρχική σελίδα"
+ DEMO: "Επίδειξη"
+ BUG_TRACKER: "Παρακολούθηση Σφαλμάτων"
+ KEYWORDS: "Λέξεις κλειδιά"
+ LICENSE: "Άδεια Χρήσης"
+ DESCRIPTION: "Περιγραφή"
+ README: "Διάβασέ με"
+ REMOVE_THEME: "Κατάργηση Θέματος"
+ INSTALL_THEME: "Εγκατάσταση Θέματος"
+ THEME: "Θέμα"
+ BACK_TO_THEMES: "Πίσω στα Θέματα"
+ BACK_TO_PLUGINS: "Πίσω στα Πρόσθετα"
+ CHECK_FOR_UPDATES: "Ελέγχος για Ενημερώσεις"
+ ADD: "Προσθήκη"
+ CLEAR_CACHE: "Εκκαθάριση προσωρινής μνήμης"
+ CLEAR_CACHE_ALL_CACHE: "Όλης της Cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Μόνον οι διαθέσιμοι πόροι"
+ CLEAR_CACHE_IMAGES_ONLY: "Μόνον των Εικόνων"
+ CLEAR_CACHE_CACHE_ONLY: "Μόνον τη μνήμη cache"
+ CLEAR_CACHE_TMP_ONLY: "Tmp μόνο"
+ DASHBOARD: "Πίνακας Ελέγχου"
+ UPDATES_AVAILABLE: "Υπάρχουν Διαθέσιμες Ενημερώσεις"
+ DAYS: "Ημέρες"
+ UPDATE: "Ενημέρωση"
+ BACKUP: "Δημιουργία αντιγράφου ασφαλείας"
+ STATISTICS: "Στατιστικά"
+ TODAY: "Σήμερα"
+ WEEK: "Εβδομάδα"
+ MONTH: "Μήνας"
+ LATEST_PAGE_UPDATES: "Πιο πρόσφατες ενημερώσεις της σελίδας"
+ MAINTENANCE: "Συντήρηση"
+ UPDATED: "Ενημερωμένο"
+ MON: "Δευ"
+ TUE: "Τρί"
+ WED: "Τετ"
+ THU: "Πέμ"
+ FRI: "Παρ"
+ SAT: "Σάβ"
+ SUN: "Κυρ"
+ COPY: "Αντιγραφή"
+ EDIT: "Επεξεργασία"
+ CREATE: "Δημιουργία"
+ GRAV_ADMIN: "Διαχειριστής του Grav"
+ GRAV_OFFICIAL_PLUGIN: "Επίσημο πρόσθετο του Grav"
+ GRAV_OFFICIAL_THEME: "Επίσημο Θέμα του Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Αυτό το πρόσθετο είναι συμβολικά συνδεδεμένο. Οποιεσδήποτε ενημερώσεις δεν θα εντοπιστούν."
+ THEME_SYMBOLICALLY_LINKED: "Αυτό το θέμα είναι συμβολικά συνδεδεμένο. Οποιεσδήποτε ενημερώσεις δεν θα εντοπιστούν"
+ REMOVE_PLUGIN: "Αφαιρέστε το Πρόσθετο"
+ INSTALL_PLUGIN: "Εγκατάσταση Πρόσθετου"
+ AVAILABLE: "Διαθέσιμα"
+ INSTALLED: "Εγκατεστημένα"
+ INSTALL: "Εγκατάσταση"
+ ACTIVE_THEME: "Ενεργό Θέμα"
+ SWITCHING_TO: "Μετάβαση σε"
+ SWITCHING_TO_DESCRIPTION: "Εάν αλλάξετε το θέμα, δεν υπάρχει καμία εγγύηση ότι θα υποστηρίζονται όλα τα layouts σελίδων, ενδεχομένως προκαλώντας σφάλματα όταν θα φορτώσουν οι σελίδες αυτές."
+ SWITCHING_TO_CONFIRMATION: "Θέλετε να συνεχίσετε και να μεταβείτε στο θέμα"
+ CREATE_NEW_USER: "Δημιουργία νέου χρήστη"
+ REMOVE_USER: "Διαγραφή χρήστη"
+ ACCESS_DENIED: "Απαγορεύεται η Πρόσβαση"
+ ACCOUNT_NOT_ADMIN: "ο λογαριασμός σας δεν έχει δικαιώματα διαχειριστή"
+ PHP_INFO: "Πληροφορίες της PHP"
+ INSTALLER: "Πρόγραμμα εγκατάστασης"
+ AVAILABLE_THEMES: "Διαθέσιμα Θέματα"
+ AVAILABLE_PLUGINS: "Διαθέσιμα πρόσθετα"
+ INSTALLED_THEMES: "Εγκατεστημένα Θέματα"
+ INSTALLED_PLUGINS: "Εγκατεστημένα πρόσθετα"
+ BROWSE_ERROR_LOGS: "Περιήγηση στα αρχεία σφαλμάτων"
+ SITE: "Ιστότοπος"
+ INFO: "Πληροφορίες"
+ SYSTEM: "Σύστημα"
+ USER: "Χρήστης"
+ ADD_ACCOUNT: "Προσθήκη λογαριασμού"
+ SWITCH_LANGUAGE: "Εναλλαγή γλώσσας"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Το πρόσθετο ενεργοποιήθηκε με επιτυχία"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Το πρόσθετο απενεργοποιήθηκε με επιτυχία"
+ SUCCESSFULLY_CHANGED_THEME: "Έγινε επιτυχής αλλαγή του προεπιλεγμένου θέματος"
+ INSTALLATION_FAILED: "Η εγκατάσταση απέτυχε"
+ INSTALLATION_SUCCESSFUL: "Επιτυχής εγκατάσταση"
+ UNINSTALL_FAILED: "Η απεγκατάσταση έχει αποτύχει"
+ UNINSTALL_SUCCESSFUL: "Η απεγκατάσταση έγινε με επιτυχία"
+ SUCCESSFULLY_SAVED: "Επιτυχής αποθήκευση"
+ SUCCESSFULLY_COPIED: "Επιτυχής αντιγραφή"
+ REORDERING_WAS_SUCCESSFUL: "Η αναδιάταξη ήταν επιτυχής"
+ SUCCESSFULLY_DELETED: "Επιτυχής διαγραφή"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Επιτυχία στην αλλαγή γλώσσας"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Έχετε ανεπαρκή δικαιώματα για την εργασία"
+ CACHE_CLEARED: "Η προσωρινή μνήμη καθάρισε"
+ METHOD: "Μέθοδος"
+ ERROR_CLEARING_CACHE: "Σφάλμα κατά την εκκαθάριση της μνήμης cache"
+ AN_ERROR_OCCURRED: "Παρουσιάστηκε ένα σφάλμα"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Το αντίγραφο ασφαλείας είναι έτοιμο για λήψη"
+ DOWNLOAD_BACKUP: "Λήψη αντιγράφου ασφαλείας"
+ PAGES_FILTERED: "Σελίδες που φιλτραρίστηκαν"
+ NO_PAGE_FOUND: "Δεν βρέθηκαν σελίδες"
+ INVALID_PARAMETERS: "Μη έγκυρες παράμετροι"
+ NO_FILES_SENT: "Δεν απεστάλη κανένα αρχείο"
+ EXCEEDED_FILESIZE_LIMIT: "Υπέρβαση ορίου μεγέθους αρχείων ρύθμισης παραμέτρων της PHP"
+ UNKNOWN_ERRORS: "Άγνωστο Σφάλμα"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Το αρχείο υπερβαίνει το προκαθορισμένο όριο μεγέθους"
+ UNSUPPORTED_FILE_TYPE: "Μη υποστηριζόμενος τύπος αρχείου"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Απέτυχε η μετακίνηση του μεταφορτωμένου αρχείου."
+ FILE_UPLOADED_SUCCESSFULLY: "Το αρχείο μεταφορτώθηκε με επιτυχία"
+ FILE_DELETED: "Το αρχείο διεγράφη"
+ FILE_COULD_NOT_BE_DELETED: "Δεν ήταν δυνατή η διαγραφή του αρχείου"
+ FILE_NOT_FOUND: "Το αρχείο δεν βρέθηκε"
+ NO_FILE_FOUND: "Δεν βρέθηκαν αρχεία"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Το Grav ενημερώθηκε επιτυχώς σε"
+ GRAV_UPDATE_FAILED: "Η ενημέρωση του Grav απέτυχε"
+ EVERYTHING_UPDATED: "Τα πάντα έχουν ενημερωθεί"
+ UPDATES_FAILED: "Αποτυχία ενημέρωσης"
+ AVATAR_BY: "Avatar από"
+ AVATAR_UPLOAD_OWN: "Ή ανέβασε το δικό σου avatar..."
+ LAST_BACKUP: "Τελευταία δημιουργία αντιγράφων ασφαλείας"
+ FULL_NAME: "Ονοματεπώνυμο"
+ USERNAME: "Όνομα χρήστη"
+ EMAIL: "Διεύθυνση ηλεκτρονικού ταχυδρομείου"
+ USERNAME_EMAIL: "Όνομα χρήστη ή διεύθυνση ηλεκτρονικού ταχυδρομείου"
+ PASSWORD: "Συνθηματικό"
+ PASSWORD_CONFIRM: "Επιβεβαίωση συνθηματικού"
+ TITLE: "Τίτλος"
+ LANGUAGE: "Γλώσσα"
+ ACCOUNT: "Λογαριασμός"
+ EMAIL_VALIDATION_MESSAGE: "Πρέπει να είναι μια έγκυρη διεύθυνση email"
+ PASSWORD_VALIDATION_MESSAGE: "Το συνθηματικό πρέπει να περιέχει τουλάχιστον έναν αριθμό, ένα κεφαλαίο και ένα πεζό γράμμα και τουλάχιστον 8 ή περισσότερους χαρακτήρες"
+ LANGUAGE_HELP: "Ορίστε την αγαπημένη γλώσσα"
+ MEDIA: "Πολυμέσα"
+ DEFAULTS: "Προεπιλογές"
+ SITE_TITLE: "Τίτλος Ιστοχώρου"
+ SITE_TITLE_PLACEHOLDER: "Τίτλος σε όλο τον ιστοχώρο"
+ SITE_TITLE_HELP: "Προεπιλεγμένος τίτλος για το site σας, χρησιμοποιείται συχνά στα θέματα"
+ SITE_DEFAULT_LANG: "Προεπιλεγμένη γλώσσα"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Προεπιλεγμένη γλώσσα που θα χρησιμοποιείται από tag του θέματος"
+ SITE_DEFAULT_LANG_HELP: "Προεπιλεγμένη γλώσσα που θα χρησιμοποιείται από tag του θέματος"
+ DEFAULT_AUTHOR: "Προεπιλεγμένος συντάκτης"
+ DEFAULT_AUTHOR_HELP: "Ένα προεπιλεγμένο όνομα συντάκτη, που χρησιμοποιείται συχνά στα θέματα ή στο περιεχόμενο της σελίδας"
+ DEFAULT_EMAIL: "Προεπιλεγμένη διεύθυνση ηλεκτρονικού ταχυδρομείου"
+ DEFAULT_EMAIL_HELP: "Μία ηλεκτρονική διεύθυνση email για να χρησιμοποιηθεί σε θέματα ή σελίδες"
+ TAXONOMY_TYPES: "Τύποι ταξινομίας"
+ TAXONOMY_TYPES_HELP: "Τύποι ταξινόμησης πρέπει να οριστούν εδώ εάν θέλετε να τους χρησιμοποιήσετε σε σελίδες"
+ PAGE_SUMMARY: "Περίληψη Σελίδας"
+ ENABLED: "Ενεργοποιημένη"
+ ENABLED_HELP: "Ενεργοποίηση σύνοψης σελίδας (η σύνοψη επιστρέφει το ίδιο με το περιεχόμενο της σελίδας)"
+ 'YES': "Ναι"
+ 'NO': "Όχι"
+ SUMMARY_SIZE: "Μέγεθος Περίληψης"
+ SUMMARY_SIZE_HELP: "Το πλήθος των χαρακτήρων μίας σελίδας που θα χρησιμοποιηθεί για τη σύνοψη της σελίδας"
+ FORMAT: "Μορφοποίηση"
+ FORMAT_HELP: "short = χρησιμοποίησε την πρώτη εμφάνιση του delimiter ή την υπέρβαση του πλήθους χαρακτήρων; long = η σύνοψη θα αγνοηθεί"
+ SHORT: "Σύντομη"
+ LONG: "Εκτεταμένη"
+ DELIMITER: "Διαχωριστικό"
+ DELIMITER_HELP: "Ο οριοθέτης σύνοψης (προεπιλογή ' ===')"
+ METADATA: "Μεταδεδομένα"
+ METADATA_HELP: "Προεπιλεγμένες τιμές μεταδεδομένων που θα εμφανίζονται σε κάθε σελίδα εκτός εάν παρακάμπτονται από την εκάστοτε σελίδα"
+ NAME: "Όνομα"
+ CONTENT: "Περιεχόμενο"
+ REDIRECTS_AND_ROUTES: "Ανακατευθύνσεις και Διαδρομές"
+ CUSTOM_REDIRECTS: "Προσαρμοσμένες Ανακατευθύνσεις"
+ CUSTOM_REDIRECTS_HELP: "διαδρομές για την ανακατεύθυνση σε άλλες σελίδες. Η αντικατάσταση με μία κανονική παράσταση είναι έγκυρη"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/your/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/your/redirect"
+ CUSTOM_ROUTES: "Προσαρμοσμένες Διαδρομές"
+ CUSTOM_ROUTES_HELP: "διαδρομές για την ανακατεύθυνση σε άλλες σελίδες. Η αντικατάσταση με μία κανονική παράσταση είναι έγκυρη"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/your/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/your/route"
+ FILE_STREAMS: "File Streams"
+ DEFAULT: "Προεπιλογή"
+ PAGE_MEDIA: "Σελίδα Media"
+ OPTIONS: "Επιλογές"
+ PUBLISHED: "Δημοσιευμένο"
+ PUBLISHED_HELP: "Από προεπιλογή, μια σελίδα δημοσιεύεται κατευθείαν, εκτός αν ορίσετε την επιλογή published: false, εάν το publish_date αναφέρεται σε μελλοντική στιγμή, ή αν το unpublish_date αναφέρεται στο παρελθόν"
+ DATE: "Ημερομηνία"
+ DATE_HELP: "Η μεταβλητή date σας επιτρέπει να ορίσετε συγκεκριμένα μία ημερομηνία που να σχετίζεται με τη σελίδα αυτή."
+ PUBLISHED_DATE: "Ημερομηνία δημοσίευσης"
+ PUBLISHED_DATE_HELP: "Μπορεί να δοθεί μία ημερομηνία για την αυτόματη δημοσίευση της ανάρτησης."
+ UNPUBLISHED_DATE: "Ημερομηνία παύσης δημοσίευσης"
+ UNPUBLISHED_DATE_HELP: "Μπορεί να δοθεί μία ημερομηνία για την αυτόματη ιδιωτικοποίηση της ανάρτησης."
+ ROBOTS: "Ρομπότ"
+ TAXONOMIES: "Ταξινομίες"
+ TAXONOMY: "Ταξινομία"
+ ADVANCED: "Γιά Προχωρημένους"
+ SETTINGS: "Ρυθμίσεις"
+ FOLDER_NUMERIC_PREFIX: "Αριθμητικό Πρόθεμα Φακέλου"
+ FOLDER_NUMERIC_PREFIX_HELP: "Αριθμητικό πρόθεμα που παρέχει χειροκίνητη ταξινόμηση και υπονοεί την ορατότητα"
+ FOLDER_NAME: "Όνομα φακέλου"
+ FOLDER_NAME_HELP: "Το όνομα του φακέλου που θα χρησιμοποιηθεί στο σύστημα αρχείων γι αυτή τη σελίδα"
+ PARENT: "Γονικό"
+ DEFAULT_OPTION_ROOT: "-Ρίζα-"
+ DEFAULT_OPTION_SELECT: "-Επιλέξτε-"
+ DISPLAY_TEMPLATE: "Εμφάνιση Προτύπου"
+ DISPLAY_TEMPLATE_HELP: "Το τύπος της σελίδας που ορίζει ποιο twig template θα χρησιμοποιηθεί για να αποδοθεί η σελίδα"
+ BODY_CLASSES: "Body Classes"
+ ORDERING: "Ταξινόμηση"
+ PAGE_ORDER: "Σειρά Σελίδων"
+ OVERRIDES: "Παρακάμψεις"
+ MENU: "Μενού"
+ MENU_HELP: "Η συμβολοσειρά που θα χρησιμοποιηθεί σε ένα μενού. Εάν δεν έχει καθοριστεί, θα χρησιμοποιηθεί ο τίτλος."
+ SLUG: "Slug"
+ SLUG_HELP: "Η μεταβλητή slug σας επιτρέπει να ορίσετε συγκεκριμένα το sub-URL μίας σελίδας"
+ SLUG_VALIDATE_MESSAGE: "Ένα slug πρέπει να περιέχει μόνο πεζούς αλφαριθμητικούς χαρακτήρες και παύλες"
+ PROCESS: "Διαδικασία"
+ PROCESS_HELP: "Ελέγχει τον τρόπο που οι σελίδες δέχονται επεξεργασία. Μπορεί να ρυθμιστεί για την εκάστοτε σελίδα ή καθολικά"
+ DEFAULT_CHILD_TYPE: "Προεπιλεγμένος τύπος Child"
+ USE_GLOBAL: "Χρησιμοποίησε τη Global τιμή"
+ ROUTABLE: "Μπορεί να δρομολογηθεί"
+ ROUTABLE_HELP: "Εάν η σελίδα είναι προσβάσιμα από μια διεύθυνση URL"
+ CACHING: "Προσωρινή μνήμη αποθήκευσης"
+ VISIBLE: "Ορατή"
+ VISIBLE_HELP: "Προσδιορίζει αν μια σελίδα είναι ορατή στην πλοήγηση."
+ DISABLED: "Ανενεργή"
+ ITEMS: "Αντικείμενα"
+ ORDER_BY: "Ταξινόμιση κατά"
+ ORDER: "Ταξινόμηση"
+ FOLDER: "Φάκελος"
+ ASCENDING: "Αύξουσα"
+ DESCENDING: "Φθίνουσα"
+ ADD_MODULAR_CONTENT: "Προσθήκη σπονδυλωτού περιεχομένου"
+ PAGE_TITLE: "Τίτλος σελίδας"
+ PAGE_TITLE_HELP: "Ο τίτλος της σελίδας"
+ PAGE: "Σελίδα"
+ MODULAR_TEMPLATE: "Σπονδυλωτό πρότυπο"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Όνομα αρχείου"
+ PARENT_PAGE: "Γονική σελίδα"
+ HOME_PAGE: "Αρχική σελίδα"
+ HOME_PAGE_HELP: "Η σελίδα που το Grav θα χρησιμοποιήσει ως προεπιλεγμένη σελίδα προσγείωσης"
+ DEFAULT_THEME: "Προεπιλεγμένο Θέμα"
+ DEFAULT_THEME_HELP: "Ορίσετε το προεπιλεγμένο θέμα που θα χρησιμοποιεί το Grav (η προεπιλογή είναι το θέμα Antimatter)"
+ TIMEZONE: "Ζώνη ώρας"
+ TIMEZONE_HELP: "Παράκαμψη της προεπιλεγμένης ζώνης ώρας του διακομιστή"
+ SHORT_DATE_FORMAT: "Σύντομη μορφή ημερομηνίας"
+ SHORT_DATE_FORMAT_HELP: "Ρύθμισε τη σύντομη μορφή ημερομηνίας που θα χρησιμοποιείται από τα θέματα"
+ LONG_DATE_FORMAT: "Εκτενής μορφή ημερομηνίας"
+ LONG_DATE_FORMAT_HELP: "Ρύθμισε την εκτενή μορφή ημερομηνίας που θα χρησιμοποιείται από τα θέματα"
+ DEFAULT_ORDERING: "Προεπιλεγμένη Ταξινόμηση"
+ DEFAULT_ORDERING_HELP: "Οι σελίδες μίας λίστας θα εμφανίζονται χρησιμοποιώντας την σειρά εκτός αν αυτό παρακαμφθεί"
+ DEFAULT_ORDERING_DEFAULT: "Default - βάσει του όνομα φακέλου"
+ DEFAULT_ORDERING_FOLDER: "Folder - βάσει του όνομα φακέλου"
+ DEFAULT_ORDERING_TITLE: "Title - βάσει του τίτλου που έχει οριστεί στο header"
+ DEFAULT_ORDERING_DATE: "Date - βάσει της ημερομηνίας που έχει οριστεί στο header"
+ DEFAULT_ORDER_DIRECTION: "Προεπιλεγμένη σειρά εμφάνισης"
+ DEFAULT_ORDER_DIRECTION_HELP: "Η κατεύθυνση των σελίδων σε μια λίστα"
+ DEFAULT_PAGE_COUNT: "Προεπιλεγμένο πλήθος σελίδων"
+ DEFAULT_PAGE_COUNT_HELP: "Προεπιλεγμένο μέγιστο πλήθος σελίδων σε μία λίστα"
+ DATE_BASED_PUBLISHING: "Δημοσίευση βάσει ημερομηνίας"
+ DATE_BASED_PUBLISHING_HELP: "Αυτόματη δημοσίευση ή ιδιωτικοποίηση των αναρτήσεων βασισμένη στην ημερομηνία τους"
+ EVENTS: "Συμβάντα"
+ EVENTS_HELP: "Ενεργοποίησε ή απενεργοποίησε συγκεκριμένα events. Απενεργοποιώντας τα ίσως διακοπεί η λειτουργία κάποιου προσθέτου"
+ REDIRECT_DEFAULT_ROUTE: "Ανακατεύθυνση της προεπιλεγμένης διαδρομής"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Αυτόματη ανακατεύθυνση στην προεπιλεγμένη διαδρομή μιας σελίδας"
+ LANGUAGES: "Γλώσσες"
+ SUPPORTED: "Υποστηρίζεται"
+ SUPPORTED_HELP: "Λίστα χωρισμένη με κόμματα κωδικών γλωσσών 2 γραμμάτων (π.χ. 'en,fr,de')"
+ TRANSLATIONS_ENABLED: "Οι μεταφράσεις είναι ενεργοποιημένες"
+ TRANSLATIONS_ENABLED_HELP: "Υποστήριξη μεταφράσεων του Grav, πρόσθετων και επεκτάσεων"
+ TRANSLATIONS_FALLBACK: "Εναλλακτική μετάφραση"
+ TRANSLATIONS_FALLBACK_HELP: "Fallback σε κάποια άλλη μετάφραση εάν η επιλεγμένη γλώσσα δεν έχει μεταφραστεί"
+ ACTIVE_LANGUAGE_IN_SESSION: "Ενεργή γλώσσα κατά τη συνεδρία"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Αποθήκευση της ενεργής γλώσσας στη συνεδρία"
+ HTTP_HEADERS: "Κεφαλίδες HTTP"
+ EXPIRES: "Λήξη"
+ EXPIRES_HELP: "Ορίζει την κεφαλίδα λήξης. Η τιμή είναι σε δευτερόλεπτα."
+ CACHE_CONTROL: "HTTP Cache-Control"
+ CACHE_CONTROL_HELP: "Ορίστε μια έγκυρη τιμή cache-ελέγχου όπως 'όχι-cache, όχι-αποθήκευση, να-επανεπικυρωθεί'"
+ LAST_MODIFIED: "Τελευταία τροποποίηση"
+ LAST_MODIFIED_HELP: "Ορίζει την τελευταία τροποποιημένη κεφαλίδα που μπορεί να σας βοηθήσει να βελτιστοποιήσετε τον διακομιστή μεσολάβησης και την προσωρινή αποθήκευση του προγράμματος περιήγησης"
+ ETAG: "ETag"
+ ETAG_HELP: "Καθορίζει την κεφαλίδα etag για να βοηθήσει στον εντοπισμό όταν μια σελίδα έχει τροποποιηθεί"
+ VARY_ACCEPT_ENCODING: "Ποικίλλει η δεκτή κωδικοποίηση"
+ VARY_ACCEPT_ENCODING_HELP: "Ορίζει την κεφαλίδα «Ποικίλλει: Δεκτή Κωδικοποίηση» για να βοηθήσει με το διακομιστή μεσολάβησης και την προσωρινή αποθήκευση CDN"
+ MARKDOWN_EXTRA: "Markdown extra"
+ MARKDOWN_EXTRA_HELP: "Ενεργοποιήσετε την προεπιλεγμένη υποστήριξη για Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Διάφυγε τα HTML στοιχεία σε markdown extra fences"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Διαφεύγει τα HTML στοιχεία σε markdown extra fences"
+ AUTO_LINE_BREAKS: "Αυτόματες αλλαγές γραμμών"
+ AUTO_LINE_BREAKS_HELP: "Ενεργοποιήσετε την υποστήριξη για αυτόματη αλλαγή γραμμής στη markdown"
+ AUTO_URL_LINKS: "Αυτόματες συνδέσεις URL"
+ AUTO_URL_LINKS_HELP: "Ενεργοποιήσετε την αυτόματη μετατροπή των διευθύνσεων URL σε HTML υπερ-συνδέσεις"
+ ESCAPE_MARKUP: "Σημειοθέτηση αποσπάσματος"
+ ESCAPE_MARKUP_HELP: "Ετικέτες σήμανσης διαφυγής σε HTML οντότητες"
+ CACHING_HELP: "Γενικός διακόπτης ενεργοποίησης/απενεργοποίησης της προσωρινής αποθήκευσης του Grav"
+ CACHE_CHECK_METHOD: "Μέθοδος ελέγχου μνήμης προσωρινής αποθήκευσης (cache)"
+ CACHE_CHECK_METHOD_HELP: "Επιλέξτε τη μέθοδο που χρησιμοποιεί το Grav για να ελέγξει αν έχουν τροποποιηθεί αρχεία σελίδων."
+ CACHE_DRIVER: "Πρόγραμμα οδήγησης της μνήμης cache"
+ CACHE_DRIVER_HELP: "Επιλέξτε ποιο πρόγραμμα οδήγησης της προσωρινής αποθήκευσης να χρησιμοποιήσει το Grav. Ο 'Αυτόματος εντοπισμός' προσπαθεί να βρει το καλύτερο για εσάς"
+ CACHE_PREFIX: "Πρόθεμα cache"
+ CACHE_PREFIX_HELP: "Ένα αναγνωριστικό για το μέρος του κλειδιού Grav. Μην το αλλάξετε εκτός και αν γνωρίζετε τι κάνετε."
+ CACHE_PREFIX_PLACEHOLDER: "Προέρχεται από τη βασική διεύθυνση URL (παράκαμψη εισάγοντας τυχαία συμβολοσειρά)"
+ LIFETIME: "Διάρκεια ζωής"
+ LIFETIME_HELP: "Ορίζει τη διάρκεια ζωής της cache σε δευτερόλεπτα. 0 = άπειρο"
+ GZIP_COMPRESSION: "Συμπίεση Gzip"
+ GZIP_COMPRESSION_HELP: "Ενεργοποιήστε τη GZip συμπίεση της σελίδας του Grav για αυξημένη απόδοση."
+ TWIG_TEMPLATING: "Πρότυπα Twig"
+ TWIG_CACHING: "Προσωρινή αποθήκευση Twig"
+ TWIG_CACHING_HELP: "Ελέγχει το μηχανισμό προσωρινής αποθήκευσης του Twig. Αφήστε το ενεργοποιημένο για καλύτερη απόδοση."
+ TWIG_DEBUG: "Εντοπισμός σφαλμάτων Twig"
+ TWIG_DEBUG_HELP: "Επιτρέπει την επιλογή της μη φόρτωσης της επέκτασης Αποσφαλμάτωση Twig"
+ DETECT_CHANGES: "Ανίχνευση μεταβολών"
+ DETECT_CHANGES_HELP: "Το Twig θα μεταγλωττίσει αυτόματα την προσωρινή μνήμη του αν εντοπίσει αλλαγές σε πρότυπα Twig"
+ AUTOESCAPE_VARIABLES: "Εφαρμογή Autoescape στις μεταβλητές"
+ AUTOESCAPE_VARIABLES_HELP: "Κάνει autoescape όλες τις μεταβλητές. Αυτό πιθανότατα θα σπάσει το site σας"
+ ASSETS: "Αντικείμενα"
+ CSS_PIPELINE: "Αγωγός CSS"
+ CSS_PIPELINE_HELP: "Ο αγωγός CSS είναι η ενοποίηση πολλαπλών CSS πόρων σε ένα αρχείο"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Συμπεριλάβετε εξωτερικούς αγωγούς CSS"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Οι εξωτερικές διευθύνσεις URL μερικές φορές έχουν σχετικές αναφορές αρχείων και δεν θα έπρεπε να διοχετεύονται"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Πρώτα επεξεργασία CSS αγωγού"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Επεξεργάζεται τον CSS αγωγό πριν από οποιαδήποτε άλλη αναφορά CSS που δεν περιλαμβάνεται"
+ CSS_MINIFY: "Συμπίεση της CSS"
+ CSS_MINIFY_HELP: "Ελαχιστοποίησε το CSS κατά τη διοχέτευση"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "Παράκαψη ελαχιστοποίησης CSS για Windows"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Παράκαμψη Ελαχιστοποίησης για Windows. False από προεπιλογή λόγω ThreadStackSize"
+ CSS_REWRITE: "Επανεγγραφή CSS"
+ CSS_REWRITE_HELP: "Επανεγγραφή κάθε αναφορικού CSS URL κατά τη διοχέτευση"
+ JAVASCRIPT_PIPELINE: "Αγωγός JavaScript"
+ JAVASCRIPT_PIPELINE_HELP: "Ο αγωγός JS είναι η ενοποίηση πολλαπλών JS πόρων σε ένα αρχείο"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Συμπεριλάβετε εξωτερικούς αγωγούς JS"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Οι εξωτερικές διευθύνσεις URL μερικές φορές έχουν σχετικές αναφορές αρχείων και δεν θα έπρεπε να διοχετεύονται"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Πρώτα επεξεργασία JS αγωγού"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Επεξεργάζεται τον JS αγωγό πριν από οποιαδήποτε άλλη αναφορά JS που δεν περιλαμβάνεται"
+ JAVASCRIPT_MINIFY: "Συμπίεση του κώδικα JavaScript"
+ JAVASCRIPT_MINIFY_HELP: "Ελαχιστοποίησε το JS κατά τη διοχέτευση"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Ενεργοποιήστε τις χρονοσημάνσεις στους διαθέσιμους πόρους"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Ενεργοποίηση χρονοσημάνσεων στους διαθέσιμους πόρους"
+ COLLECTIONS: "Συλλογές"
+ ERROR_HANDLER: "Πρόγραμμα χειρισμού σφαλμάτων"
+ DISPLAY_ERRORS: "Εμφάνιση των μηνυμάτων λάθους"
+ DISPLAY_ERRORS_HELP: "Εμφάνιση πλήρους backtrace στιλ σελίδας σφάλματος"
+ LOG_ERRORS: "Καταγραφή σφαλμάτων σε αρχείο"
+ LOG_ERRORS_HELP: "Καταγραφή σφαλμάτων στο φάκελο /logs"
+ DEBUGGER: "Πρόγραμμα εντοπισμού σφαλμάτων"
+ DEBUGGER_HELP: "Ενεργοποιήσετε το πρόγραμμα εντοπισμού σφαλμάτων του Grav και τις ακόλουθες ρυθμίσεις"
+ DEBUG_TWIG: "Εκσφαλμάτωση του Twig"
+ DEBUG_TWIG_HELP: "Ενεργοποίηση του εντοπισμού σφαλμάτων στα πρότυπα του Twig"
+ SHUTDOWN_CLOSE_CONNECTION: "Τερματισμός στενής σύνδεσης"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Κλείσε τη σύνδεση πριν από την κλήση onShutdown(). False για εντοπισμό σφαλμάτων"
+ DEFAULT_IMAGE_QUALITY: "Προεπιλεγμένη ποιότητα εικόνας"
+ DEFAULT_IMAGE_QUALITY_HELP: "Η προεπιλεγμένη ποιότητα εικόνας που θα χρησιμοποιείται όταν γίνεται αναδειγματοληψία ή προσωρινή αποθήκευση εικόνων (85%)"
+ CACHE_ALL: "Προσωρινή αποθήκευση όλων των εικόνων"
+ CACHE_ALL_HELP: "Πέρασε όλες τις εικόνες μέσω του Grav cache συστήματος ακόμη και αν δεν έχουν επεξεργασία μέσων"
+ IMAGES_DEBUG: "Υδατογράφημα αποσφαλμάτωσης εικόνας"
+ IMAGES_DEBUG_HELP: "Εμφάνιση μιας επικάλυψης πάνω από τις εικόνες που δείχνει το βάθος pixel της εικόνας, όταν εργάζεστε με retina για παράδειγμα"
+ UPLOAD_LIMIT: "Όριο μεταφόρτωσης αρχείων"
+ UPLOAD_LIMIT_HELP: "Ορίσετε το μέγιστο μέγεθος μεταφόρτωσης σε byte (0 είναι απεριόριστο)"
+ ENABLE_MEDIA_TIMESTAMP: "Ενεργοποιήστε τις χρονοσημάνσεις στα μέσα"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Προσθέτει μια χρονική σήμανση με βάση την τελευταία ημερομηνία τροποποίησης σε κάθε στοιχείο πολυμέσων"
+ SESSION: "Συνεδρία"
+ SESSION_ENABLED_HELP: "Ενεργοποιήσετε την υποστήριξη συνεδριών λειτουργίας εντός Grav"
+ TIMEOUT: "Λήξη χρονικού ορίου"
+ TIMEOUT_HELP: "Ορίζει το χρονικό όριο της συνεδρίας σε δευτερόλεπτα"
+ SESSION_NAME_HELP: "Ένα αναγνωριστικό που χρησιμοποιείται για το σχηματισμό του όνόματος του cookie της συνεδρίας"
+ ABSOLUTE_URLS: "Απόλυτες διευθύνσεις URL"
+ ABSOLUTE_URLS_HELP: "Απόλυτες ή σχετικές διευθύνσεις URL για «base_url»"
+ PARAMETER_SEPARATOR: "Διαχωριστικό παραμέτρων"
+ PARAMETER_SEPARATOR_HELP: "Διαχωριστικό για τις παραμέτρους που διαβιβάστηκαν, που μπορούν να αλλάξουν για τον Apache στα Windows"
+ TASK_COMPLETED: "Η εργασία ολοκληρώθηκε"
+ EVERYTHING_UP_TO_DATE: "Τα πάντα είναι ενημερωμένα"
+ UPDATES_ARE_AVAILABLE: "υπάρχουν διαθέσιμες ενημερώσεις"
+ IS_AVAILABLE_FOR_UPDATE: "είναι διαθέσιμη για ενημέρωση"
+ IS_NOW_AVAILABLE: "είναι τώρα διαθέσιμη"
+ CURRENT: "Τρέχουσα έκδοση"
+ UPDATE_GRAV_NOW: "Αναβαθμίστε το Grav τώρα"
+ GRAV_SYMBOLICALLY_LINKED: "Το Grav είναι symlinked. Δε θα υπάρχει διαθέσιμη αναβάθμιση"
+ UPDATING_PLEASE_WAIT: "Ενημέρωση... παρακαλώ περιμένετε, λήψη"
+ OF_THIS: "αυτό"
+ OF_YOUR: "σας"
+ HAVE_AN_UPDATE_AVAILABLE: "έχει διαθέσιμη ενημέρωση"
+ SAVE_AS: "Αποθήκευση ως"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή τη σελίδα και όλα τα τέκνα; Εάν η σελίδα είναι μεταφρασμένη σε άλλες γλώσσες, αυτές οι μεταφράσεις θα κρατηθούν και πρέπει να διαγραφούν ξεχωριστά. Αλλιώς ο φάκελος σελίδας θα διαγραφεί μαζί με τις υποσελίδες. Αυτή η ενέργεια δεν μπορεί να αναιρεθεί."
+ AND: "και"
+ UPDATE_AVAILABLE: "Υπάρχει διαθέσιμη ενημέρωση"
+ METADATA_KEY: "Κλειδί (π.χ. «λέξεις-κλειδιά»)"
+ METADATA_VALUE: "Τιμή (π.χ. «Blog, Grav»)"
+ USERNAME_HELP: "Το όνομα χρήστη πρέπει να είναι μεταξύ 3 και 16 χαρακτήρες, με πεζά, αριθμούς, κάτω παύλες και ενωτικά. Κεφαλαία γράμματα, διαστήματα και ειδικοί χαρακτήρες δεν επιτρέπονται"
+ FULLY_UPDATED: "Πλήρως Ενημερωμένο"
+ SAVE_LOCATION: "Τοποθεσία Αποθήκευσης"
+ PAGE_FILE: "Πρότυπο σελίδας"
+ PAGE_FILE_HELP: "Ονομασία αρχείου προτύπου σελίδας, και από προεπιλογή το πρότυπο εμφάνισης για αυτή τη σελίδα"
+ NO_USER_ACCOUNTS: "Δεν βρέθηκε κανένας λογαριασμός χρήστη, παρακαλώ δημιουργήστε έναν πρώτα..."
+ REDIRECT_TRAILING_SLASH: "Ανακατευθύνει την τελική κάθετο"
+ REDIRECT_TRAILING_SLASH_HELP: "Εκτέλεσε μια ανακατεύθυνση 301 αντί για διαφανή χειρισμό των καταληκτικών καθέτων URIs."
+ DEFAULT_DATE_FORMAT: "Μορφή ημερομηνίας σελίδας"
+ DEFAULT_DATE_FORMAT_HELP: "Μορφή ημερομηνίας σελίδας που χρησιμοποιείται από το Grav. Από προεπιλογή, το Grav επιχειρεί να μαντέψει τη μορφή, εντούτοις μπορείτε να ορίσετε μορφή σύμφωνα με τη σύνταξη PHP"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Μάντεψε αυτόματα"
+ IGNORE_FILES: "Αγνόηση αρχείων"
+ IGNORE_FILES_HELP: "Συγκεκριμένα αρχεία που θα αγνοηθούν κατά την επεξεργασία σελίδων"
+ IGNORE_FOLDERS: "Αγνόηση φακέλων"
+ IGNORE_FOLDERS_HELP: "Συγκεκριμένοι φάκελοι που θα αγνοηθούν κατά την επεξεργασία σελίδων"
+ HTTP_ACCEPT_LANGUAGE: "Όρισε την γλώσσα βάσει του φυλλομετρητή"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Μπορείτε να επιλέξετε να δοκιμάσετε να ορίσετε τη γλώσσα που βασίζεται στην ετικέτα κεφαλίδας «http_accept_language» στο πρόγραμμα περιήγησης"
+ OVERRIDE_LOCALE: "Παράκαμψη των Τοπικών Ρυθμίσεων"
+ OVERRIDE_LOCALE_HELP: "Αντικαθιστά τις ρυθμίσεις τοπικότητας στην PHP με βάση την τρέχουσα γλώσσα"
+ REDIRECT: "Ανακατεύθυνση σελίδας"
+ REDIRECT_HELP: "Εισαγάγετε μια διαδρομή σελίδας ή εξωτερική διεύθυνση URL για αυτήν τη σελίδα για να ανακατευθύνετε σε. π.χ. «/κάποια/διαδρομή» ή «http://somesite.com»"
+ PLUGIN_STATUS: "Κατάσταση πρόσθετου"
+ INCLUDE_DEFAULT_LANG: "Περιλαμβάνει την προεπιλεγμένη γλώσσα"
+ INCLUDE_DEFAULT_LANG_HELP: "Αυτό θα προτάξει όλες τις διευθύνσεις URL στην προεπιλεγμένη γλώσσα με την προεπιλεγμένη γλώσσα. π.χ. «/en/blog/my-post»"
+ ALLOW_URL_TAXONOMY_FILTERS: "Φίλτρα Ταξινόμησης URL"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Συλλογές βασισμένες σε σελίδα σας επιτρέπουν να φιλτράρετε μέσω «/taxonomy:value»."
+ REDIRECT_DEFAULT_CODE: "Προεπιλεγμένος κωδικός ανακατεύθυνσης"
+ REDIRECT_DEFAULT_CODE_HELP: "Ο κωδικός κατάστασης HTTP που θα χρησιμοποιηθεί για ανακατευθύνσεις"
+ IGNORE_HIDDEN: "Παράβλεψη των κρυφών"
+ IGNORE_HIDDEN_HELP: "Παράβλεψη όλων των αρχείων και των φακέλων που ξεκινούν με μια ΤΕΛΕΙΑ"
+ WRAPPED_SITE: "Wrapped site"
+ WRAPPED_SITE_HELP: "Για να γνωρίζουν τα θέματα/plugins αν το Grav είναι wrapped από άλλη πλατφόρμα"
+ FALLBACK_TYPES: "Επιτρεπόμενοι εναλλακτικοί τύποι"
+ FALLBACK_TYPES_HELP: "Επιτρεπτοί τύποι αρχείων που μπορούν να βρεθούν αν έχετε αποκτήσει πρόσβαση μέσω της οδού Σελίδα. Προεπιλέγει οποιοδήποτε τύπο μέσων που υποστηρίζονται."
+ INLINE_TYPES: "Ένθετοι εναλλακτικοί τύποι"
+ INLINE_TYPES_HELP: "Μια λίστα των τύπων αρχείων που πρέπει να εμφανίζονται ένθετα αντί να γίνεται λήψη αυτών"
+ APPEND_URL_EXT: "Προσάρτηση επέκτασης URL"
+ APPEND_URL_EXT_HELP: "Θα προσθέσει μια προσαρμοσμένη επέκταση στο URL της Σελίδας. Σημείωση, αυτό θα σημαίνει ότι το Grav θα αναζητήσει ' . . twig ' πρότυπο"
+ PAGE_MODES: "Λειτουργίες Σελίδας"
+ PAGE_TYPES: "Τύποι σελίδας"
+ ACCESS_LEVELS: "Επίπεδα πρόσβασης"
+ GROUPS: "Ομάδες"
+ GROUPS_HELP: "Λίστα των ομάδων που ο χρήστης είναι μέλος"
+ ADMIN_ACCESS: "Πρόσβαση Διαχειριστή"
+ SITE_ACCESS: "Πρόσβαση στον Ιστοχώρο"
+ INVALID_SECURITY_TOKEN: "Το διακριτικό ασφαλείας δεν είναι έγκυρο"
+ ACTIVATE: "Eνεργοποίηση"
+ TWIG_UMASK_FIX: "Unmask Fix"
+ TWIG_UMASK_FIX_HELP: "Από προεπιλογή το Twig δημιουργεί προσωρινά αρχεία ως 0755, η διόρθωση τα αλλάζει σε 0775"
+ CACHE_PERMS: "Δικαιώματα μνήμης cache"
+ CACHE_PERMS_HELP: "Προεπιλεγμένα δικαιώματα φακέλων cache. Συνήθως 0755 ή 0775"
+ REMOVE_SUCCESSFUL: "Επιτυχής Κατάργηση"
+ REMOVE_FAILED: "Η Κατάργηση Απέτυχε"
+ HIDE_HOME_IN_URLS: "Απόκρυψη της αρχικής διαδρομής στις διευθύνσεις URL"
+ HIDE_HOME_IN_URLS_HELP: "Θα εξασφαλίσει ότι οι προεπιλεγμένες διαδρομές για όλες τις σελίδες κάτω από την αρχική δε θα αναφέρουν την κανονική διαδρομή της"
+ TWIG_FIRST: "Επεξεργασία πρώτα των αρχείων του Twig"
+ TWIG_FIRST_HELP: "Εάν έχετε ενεργοποιήσει την επεξεργασία σελίδων Twig, τότε μπορείτε να ρυθμίσετε το Twig να επεξεργαστεί πριν ή μετά από τη markdown"
+ SESSION_SECURE: "Ασφαλής"
+ SESSION_SECURE_HELP: "Εάν είναι αληθές, δείχνει ότι η επικοινωνία για αυτό το cookie πρέπει να γίνει πάνω από μιά κρυπτογραφημένη μετάδοση. Προειδοποίηση: Ενεργοποιήστε την μόνο στις τοποθεσίες που εκτελούνται αποκλειστικά σε HTTPS"
+ SESSION_HTTPONLY: "HTTP μόνο"
+ SESSION_HTTPONLY_HELP: "Εάν είναι αληθές, δείχνει ότι τα cookies πρέπει να χρησιμοποιούνται μόνο μέσω HTTP, και δεν επιτρέπεται η τροποποίηση μέσω JavaScript"
+ REVERSE_PROXY: "Αντίστροφoς Διακομιστής Μεσολάβησης"
+ REVERSE_PROXY_HELP: "Ενεργοποιήστε το άν είστε πίσω από έναν διακομιστή αντίστροφης μεσολάβηση αντιμετωπίζετε δυσκολία με τις διευθύνσεις URL που περιέχουν εσφαλμένες θύρες"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Μη έγκυρος πρόλογος (frontmatter), αδύνατη η αποθήκευση"
+ ADD_FOLDER: "Προσθήκη φακέλου"
+ PROXY_URL: "Διεύθυνση URL του διακομιστή μεσολάβησης"
+ PROXY_URL_HELP: "Εισάγετε το Διακομιστή proxy ή τη διεύθυνση IP και τη ΘΥΡΑ (PORT)"
+ NOTHING_TO_SAVE: "Δεν υπάρχει τίποτα γιά αποθήκευση"
+ FILE_ERROR_ADD: "Παρουσιάστηκε σφάλμα κατά την προσθήκη του αρχείου"
+ FILE_ERROR_UPLOAD: "Παρουσιάστηκε σφάλμα κατά τη μεταφόρτωση του αρχείου"
+ FILE_UNSUPPORTED: "Μη υποστηριζόμενος τύπος αρχείου"
+ ADD_ITEM: "Προσθήκη στοιχείου"
+ FILE_TOO_LARGE: "Το αρχείο είναι πολύ μεγάλο για να φορτωθεί, το μέγιστο επιτρεπόμενο είναι %s σύμφωνα με τις ρυθμίσεις της PHP. Αυξήστε τη ρύθμιση PHP σας `post_max_size`"
+ INSTALLING: "Γίνεται εγκατάσταση"
+ LOADING: "Φόρτωση…"
+ DEPENDENCIES_NOT_MET_MESSAGE: "Οι ακόλουθες εξαρτήσεις πρέπει να εκπληρωθούν πρώτα:"
+ ERROR_INSTALLING_PACKAGES: "Σφάλμα κατά την εγκατάσταση πακέτων"
+ INSTALLING_DEPENDENCIES: "Εγκατάσταση εξαρτήσεων..."
+ INSTALLING_PACKAGES: "Εγκατάσταση πακέτων..."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Τα πακέτα εγκαταστάθηκαν με επιτυχία."
+ READY_TO_INSTALL_PACKAGES: "Είστε έτοιμοι να εγκαταστήσετε τα πακέτα"
+ PACKAGES_NOT_INSTALLED: "Τα πακέτα δεν εγκαταστάθηκαν"
+ PACKAGES_NEED_UPDATE: "Πακέτα που έχουν ήδη εγκατασταθεί, αλλά πολύ παλιά"
+ PACKAGES_SUGGESTED_UPDATE: "Πακέτα που είναι ήδη εγκατεστημένα, καθώς και η έκδοση είναι εντάξει, αλλά θα ενημερώνονται"
+ REMOVE_THE: "Αφαιρέστε το %s"
+ CONFIRM_REMOVAL: "Είστε βέβαιοι ότι θέλετε να διαγράψετε το %s; ?"
+ REMOVED_SUCCESSFULLY: "Το %s καταργήθηκε με επιτυχία"
+ ERROR_REMOVING_THE: "Σφάλμα κατά την αφαίρεση του %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "Το %s απαιτεί τις ακόλουθες εξαρτήσεις, που δεν απαιτούνται από άλλα εγκατεστημένα πακέτα. Εάν δεν τις χρησιμοποιείτε, μπορείτε να τις καταργήσετε απευθείας από εδώ."
+ READY_TO_UPDATE_PACKAGES: "Είστε έτοιμοι να ενημερώσετε τα πακέτα"
+ ERROR_UPDATING_PACKAGES: "Σφάλμα κατά την ενημέρωση πακέτων."
+ UPDATING_PACKAGES: "Ενημέρωση πακέτων..."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Τα πακέτα ενημερώθηκαν με επιτυχία."
+ UPDATING: "Ενημέρωση"
+ GPM_RELEASES: "GPM κυκλοφορίες"
+ GPM_RELEASES_HELP: "Επιλέξτε «Testing» για να εγκαταστήσετε beta ή testing εκδόσεις"
+ GPM_METHOD: "Μέθοδος Remote Fetch"
+ GPM_METHOD_HELP: "Όταν οριστεί σε αυτόματο, το Grav θα καθορίσει αν το fopen είναι διαθέσιμο και θα το χρησιμοποιήσει, αλλιώς θα επιστρέψει στο cURL. Για να επιβάλετε τη χρήση του ενός ή του άλλου αλλάξτε τη ρύθμιση."
+ GPM_VERIFY_PEER: "Εξ αποστάσεως επαλήθευση Peer (SSL)"
+ GPM_VERIFY_PEER_HELP: "Ορισμένες υπηρεσίες παροχής φαίνεται να αποτυγχάνουν στην επαλήθευση πιστοποιητικύ SSL του getgrav.org, κάνοντας το GPM να μην λειτουργεί. Αν αυτή είναι η περίπτωση για εσάς, η απενεργοποίηση αυτής της ρύθμισης μπορεί να βοηθήσει"
+ AUTO: "Αυτόματο"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stable"
+ TESTING: "Testing"
+ FRONTMATTER_PROCESS_TWIG: "Επεξεργασία frontmatter Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Όταν ενεργοποιηθεί μπορείτε να χρησιμοποιήσετε μεταβλητές Twig config στο frontmatter"
+ FRONTMATTER_IGNORE_FIELDS: "Παράβλεψη frontmatter πεδίων"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Ορισμένα πεδία frontmatter μπορεί να περιέχουν Twig, αλλά δεν πρέπει να υποστούν επεξεργασία, όπως οι «φόρμες»"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Το πακέτο %s εγκαταστάθηκε με επιτυχία"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Γονική ρύθμιση ταξινόμησης, η ταξινόμηση απενεργοποιήθηκε"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Η σελίδα δεν είναι ορατή, η ταξινόμηση απενεργοποιήθηκε"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Η ταξινόμηση μέσω διαχειριστή δεν υποστηρίζεται γιατί υπάρχουν περισσότερα από 200 παράγωγα"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Η ταξινόμηση σελίδων είναι απενεργοποιημένη για αυτήν τη σελίδα, επειδή το Αριθμητικό Πρόθεμα Φακέλου δεν είναι ενεργοποιημένο"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "ΣΗΜΕΙΩΣΗ: Δεν μπορείτε να προσθέσετε αρχεία πολυμέσων, μέχρι να αποθηκεύσετε τη σελίδα. Απλά κάντε κλικ «Αποθήκευση» στην κορυφή"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "ΣΗΜΕΙΩΣΗ: Η σελίδα πρέπει να αποθηκευτεί πριν να μπορείτε να ανεβάσετε αρχεία σε αυτή."
+ DROP_FILES_HERE_TO_UPLOAD: "Ρίξτε τα αρχεία σας εδώ ή κάντε κλικ σε αυτόν τον τομέα"
+ INSERT: "Εισαγωγή"
+ UNDO: "Αναίρεση"
+ REDO: "Ακύρωση Αναίρεσης"
+ HEADERS: "Επικεφαλίδες"
+ BOLD: "Έντονα"
+ ITALIC: "Πλάγια"
+ STRIKETHROUGH: "Διακριτή διαγραφή"
+ SUMMARY_DELIMITER: "Περίληψη οριοθέτη"
+ LINK: "Σύνδεσμος"
+ IMAGE: "Εικόνα"
+ BLOCKQUOTE: "Μπλοκ κειμένου παράθεσης"
+ UNORDERED_LIST: "Μη ταξινομημένη λίστα"
+ ORDERED_LIST: "Ταξινομημένη λίστα"
+ EDITOR: "Επεξεργαστής"
+ PREVIEW: "Προεπισκόπιση"
+ FULLSCREEN: "Πλήρης οθόνη"
+ MODULAR: "Σπονδυλωτή"
+ NON_ROUTABLE: "Απροσπέλαστη"
+ NON_MODULAR: "Μη σπονδυλωτή"
+ NON_VISIBLE: "Αόρατη"
+ NON_PUBLISHED: "Μη δημοσιευμένες"
+ CHARACTERS: "χαρακτήρες"
+ PUBLISHING: "Δημοσίευση"
+ NOTIFICATIONS: "Ειδοποιήσεις"
+ MEDIA_TYPES: "Τύποι μέσων"
+ IMAGE_OPTIONS: "Επιλογές εικόνας"
+ MIME_TYPE: "Τύπος MIME"
+ THUMB: "Μικρογραφία"
+ TYPE: "Τύπος"
+ FILE_EXTENSION: "Επέκταση αρχείου"
+ LEGEND: "Υπόμνημα σελίδων"
+ MEMCACHE_SERVER: "Διακομιστής Memcache"
+ MEMCACHE_SERVER_HELP: "Η διεύθυνση του διακομιστή Memcache"
+ MEMCACHE_PORT: "Θύρα Memcache"
+ MEMCACHE_PORT_HELP: "Η θύρα του διακομιστή Memcache"
+ MEMCACHED_SERVER: "Διακομιστής Memcached"
+ MEMCACHED_SERVER_HELP: "Η διεύθυνση του διακομιστή Memcached"
+ MEMCACHED_PORT: "Θύρα Memcached"
+ MEMCACHED_PORT_HELP: "Η θύρα του διακομιστή Memcached"
+ REDIS_SERVER: "Διακομιστής Redis"
+ REDIS_SERVER_HELP: "Η διεύθυνση του διακομιστή Redis"
+ REDIS_PORT: "Θύρα Redis"
+ REDIS_PORT_HELP: "Η θύρα του διακομιστή Redis"
+ REDIS_PASSWORD: "Συνθηματικό Redis"
+ ALL: "Όλα"
+ FROM: "από"
+ TO: "έως"
+ RELEASE_DATE: "Ημερομηνία κυκλοφορίας"
+ SORT_BY: "Ταξινόμηση κατά"
+ RESOURCE_FILTER: "Φίλτρο..."
+ FORCE_SSL: "Εξαναγκασμός SSL"
+ FORCE_SSL_HELP: "Γενικός εξαναγκασμός SSL, αν ενεργοποιηθεί όταν η σελίδα είναι προσβάσιμη μέσω HTTP, το Grav αποστέλλει ανακατεύθυνση στη σελίδα HTTPS"
+ NEWS_FEED: "Ροή ειδήσεων"
+ EXTERNAL_URL: "Εξωτερική διεύθυνση URL"
+ SESSION_PATH: "Η διαδρομή συνεδρίας"
+ SESSION_PATH_HELP: "Χρησιμοποιήστε το μόνο εάν επιλέξετε μια προσαρμοσμένη διεύθυνση URL βάσης (ξαναγράφετε το site domain / υποφάκελο)"
+ CUSTOM_BASE_URL: "Προσαρμοσμένο URL βάσης"
+ CUSTOM_BASE_URL_HELP: "Χρησιμοποιήστε το αν θέλετε να ξαναγράψετε τον τομέα του ιστότοπου ή να χρησιμοποιήσετε κάποιον υποφάκελο, διαφορετικό από εκείνο που χρησιμοποιείται από το Grav. Παράδειγμα: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Δεν είναι δυνατό να χρησιμοποιήσετε «%s» εκτός σελίδων.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Δεν μπορείτε να ανεβάσετε το αρχείο %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Δεν μπορείτε να μετακινήσετε το αρχείο %s σε «%s»'
+ DROPZONE_CANCEL_UPLOAD: 'Ακύρωση ανεβάσματος'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Είστε βέβαιοι ότι θέλετε να ακυρώσετε αυτό το ανέβασμα;'
+ DROPZONE_DEFAULT_MESSAGE: 'Ρίξτε τα αρχεία σας εδώ ή κάντε κλικ σε αυτόν τον τομέα'
+ DROPZONE_FALLBACK_MESSAGE: 'Το πρόγραμμα περιήγησής σας δεν υποστηρίζει drag and drop ανέβασμα αρχείων.'
+ DROPZONE_FALLBACK_TEXT: 'Παρακαλούμε χρησιμοποιήστε την παρακάτω φόρμα για να φορτώσετε τα αρχεία σας όπως γινόταν παλαιότερα.'
+ DROPZONE_FILE_TOO_BIG: 'Το αρχείο είναι πολύ μεγάλο ({{filesize}}MiB). Μέγιστο μέγεθος αρχείου: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Δεν μπορείτε να ανεβάσετε αρχεία αυτού του τύπου."
+ DROPZONE_MAX_FILES_EXCEEDED: "Δεν μπορείτε να ανεβάσετε άλλα αρχεία."
+ DROPZONE_REMOVE_FILE: "Αφαίρεση αρχείου"
+ DROPZONE_RESPONSE_ERROR: "Ο διακομιστής ανταποκρίθηκε με κωδικό {{statusCode}}."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Ενεργοποιήσετε την προσωρινή αποθήκευση Admin"
+ ADMIN_CACHING_HELP: "Η προσωρινή αποθήκευση στο admin μπορεί να ελέγχεται αυτόνομα από τη front-end ιστοσελίδα"
+ DESTINATION_NOT_SPECIFIED: "Δεν ορίστηκε προορισμός"
+ UPLOAD_ERR_NO_TMP_DIR: "Λείπει ένας προσωρινός φάκελος"
+ SESSION_SPLIT: "Συνεδρία Σπλιτ"
+ SESSION_SPLIT_HELP: "Ανεξάρτητες split συνεδρίες μεταξύ σελίδας και άλλων plugins (όπως admin)"
+ ERROR_FULL_BACKTRACE: "Πλήρες Backtrace σφάλμα"
+ ERROR_SIMPLE: "Απλό σφάλμα"
+ ERROR_SYSTEM: "Σφάλμα συστήματος"
+ IMAGES_AUTO_FIX_ORIENTATION: "Αυτόματη επιδιόρθωση του προσανατολισμού"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Διορθώσετε αυτόματα τον προσανατολισμό της εικόνας που βασίζεται στα δεδομένα Exif"
+ REDIS_SOCKET: "Υποδοχή Redis"
+ REDIS_SOCKET_HELP: "Η υποδοχή Redis"
+ NOT_SET: "Μη ορισμένο"
+ PERMISSIONS: "Δικαιώματα"
+ NEVER_CACHE_TWIG: "Ποτέ Twig Cache"
+ NEVER_CACHE_TWIG_HELP: "Μόνο cache περιεχόμενου και επεξεργασια του Twig κάθε φορά για τις σελίδες. Παραβλέπει τη ρύθμιση twig_first."
+ ALLOW_WEBSERVER_GZIP: "Επίτρεψε WebServer Gzip"
+ ALLOW_WEBSERVER_GZIP_HELP: "Απενεργοποιημένη από προεπιλογή. Όταν είναι ενεργοποιημένη, η WebServer-configured Gzip/Deflate συμπίεση θα λειτουργήσει, αλλά δεν θα κλείσει πριν από το onShutDown() προκαλώντας αργή φόρτωση της σελίδας"
+ OFFLINE_WARNING: "Αδύνατη η σύνδεση με το GPM"
+ CLEAR_IMAGES_BY_DEFAULT: "Καθαρισμός cache εικόνων από προεπιλογή"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Από προεπιλογή, οι επεξεργασμένες εικόνες καθαρίζονται για κάθε καθαρισμό cache, αυτό μπορεί να απενεργοποιηθεί"
+ CLI_COMPATIBILITY: "CLI Συμβατότητα"
+ CLI_COMPATIBILITY_HELP: "Εξασφαλίζει ότι χρησιμοποιούνται μόνο non-volatile Cache οδηγοί (αρχείο, redis, memcache, κλπ.)"
+ REINSTALL_PLUGIN: "Επανεγκατάσταση Πρόσθετου"
+ REINSTALL_THEME: "Εγκατάσταση Θέματος"
+ REINSTALL_THE: "Εγκαταστήστε ξανά το %s"
+ CONFIRM_REINSTALL: "Είστε βέβαιοι ότι θέλετε να επανεγκαταστήσετε το %s;"
+ REINSTALLED_SUCCESSFULLY: "Το %s επανεγκαταστάθηκε με επιτυχία"
+ ERROR_REINSTALLING_THE: "Σφάλμα κατά την επανεγκατάσταση του %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Το πακέτο %s επανεγκαταστάθηκε με επιτυχία"
+ REINSTALLATION_FAILED: "Η επανεγκατάσταση απέτυχε"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "Η εγκατεστημένη έκδοση δεν είναι η τελευταία έκδοση. Κάνοντας κλικ στο κουμπί Συνέχεια, θα αφαιρέσετε την τρέχουσα έκδοση και θα εγκαταστήσετε την πιο πρόσφατη διαθέσιμη έκδοση"
+ TOOLS: "Εργαλεία"
+ DIRECT_INSTALL: "Άμεση Εγκατάσταση"
+ NO_PACKAGE_NAME: "Δεν επιλέχθηκε όνομα πακέτου"
+ PACKAGE_EXTRACTION_FAILED: "Η εξαγωγή πακέτου απέτυχε"
+ NOT_VALID_GRAV_PACKAGE: "Δεν είναι ένα έγκυρο πακέτο Grav"
+ NAME_COULD_NOT_BE_DETERMINED: "Δεν μπορούσε να προσδιοριστεί το όνομα"
+ CANNOT_OVERWRITE_SYMLINKS: "Δεν μπορεί να αντικαταστήσει symlinks"
+ ZIP_PACKAGE_NOT_FOUND: "Δεν βρέθηκε ZIP"
+ GPM_OFFICIAL_ONLY: "Επίσημo GPM μόνο"
+ GPM_OFFICIAL_ONLY_HELP: "Επιτρέπει μόνο άμεση εγκατάσταση από το επίσημο αποθετήριο GPM."
+ NO_CHILD_TYPE: "Κανένα θυγατρικό τύπο για αυτό το rawroute"
+ SORTABLE_PAGES: "Ταξινομήσιμες σελίδες:"
+ UNSORTABLE_PAGES: "Μη Ταξινομήσιμες Σελίδες"
+ ADMIN_SPECIFIC_OVERRIDES: "Συγκεκριμένες Παρακάμψεις Διαχειριστή"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Σειρά Εμφάνισης Θυγατρικών"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Η σειρά με την οποία οι θυγατρικές αυτής της σελίδας θα πρέπει να εμφανίζονται στην προβολή 'Σελίδες' του Admin plugin"
+ PWD_PLACEHOLDER: "πολύπλοκη συμβολοσειρά μήκους τουλάχιστον 8 χαρακτήρων"
+ PWD_REGEX: "Κανονική έκφραση (regex) συνθηματικού"
+ PWD_REGEX_HELP: "Από προεπιλογή: Το συνθηματικό πρέπει να περιέχει τουλάχιστον έναν αριθμό, ένα κεφαλαίο και ένα πεζό γράμμα και τουλάχιστον 8 ή περισσότερους χαρακτήρες"
+ USERNAME_PLACEHOLDER: "πεζούς χαρακτήρες μόνο, π.χ. «admin»"
+ USERNAME_REGEX: "Όνομα χρήστη Regex"
+ USERNAME_REGEX_HELP: "Από προεπιλογή: πεζούς μόνο χαρακτήρες, αριθμούς, παύλες και κάτω παύλες. 3 - 16 χαρακτήρες"
+ CONTENT_PADDING: "Περιθώριο περιεχομένου"
+ CONTENT_PADDING_HELP: "Ενεργοποίηση/απενεργοποίηση του περιθωρίου περιεχομένου γύρω από την περιοχή περιεχομένου για να παρέχει περισσότερο χώρο"
+ ENABLE_AUTO_METADATA: "Αυτόματα μεταδεδομένα από Exif"
+ ENABLE_AUTO_METADATA_HELP: "Δημιουργεί αυτόματα αρχεία μεταδεδομένων για εικόνες με exif πληροφορίες"
+ 2FA_TITLE: "Έλεγχος ταυτότητας δύο παραγόντων"
+ 2FA_INSTRUCTIONS: "##### Έλεγχος Ταυτότητας Δύο Παραγόντων\nΈχετε ενεργοποιημένο τον **ΕΤΔΠ** σε αυτόν το λογαριασμό. Παρακαλώ χρησιμοποιήστε την **ΕΤΔΠ** εφαρμογή σας για να εισαγάγετε τον τρέχοντα **6-ψήφιο κωδικό** ώστε να ολοκληρώσετε τη διαδικασία σύνδεσης."
+ 2FA_REGEN_HINT: "Η αναδημιουργία του κωδικού θα απαιτήσει να ενημερώσετε την εφαρμογή επαλήθευσής σας"
+ 2FA_LABEL: "Πρόσβαση Διαχειριστή"
+ 2FA_FAILED: "Μη έγκυρος κωδικός ελέγχου ταυτότητας δύο παραγόντων, παρακαλούμε προσπαθήστε ξανά..."
+ 2FA_ENABLED: "ΕΤΔΠ Ενεργοποιημένος"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "Μυστικό ΕΤΔΠ"
+ 2FA_SECRET_HELP: "Σαρώστε αυτόν τον κωδικό QR με την [εφαρμογή ελέγχου ταυτότητας] (https://learn.getgrav.org/admin-panel/2fa#apps) της επιλογής σας. Επίσης είναι καλή ιδέα να κρατήσετε αντίγραφο ασφαλείας του μυστικού κωδικού σε μια ασφαλή τοποθεσία, σε περίπτωση που χρειαστεί να επανεγκαταστήσετε την εφαρμογή σας. Ελέγξτε τα [εγχειρίδια του Grav] (https://learn.getgrav.org/admin-panel/2fa) για περισσότερες πληροφορίες "
+ 2FA_REGENERATE: "Επαναδημιουργία"
+ FORCE_LOWERCASE_URLS: "Εξαναγκασμός πεζών URLs"
+ FORCE_LOWERCASE_URLS_HELP: "Ως προεπιλογή το Grav θα ορίσει τις διαδρομές με πεζά. Αν αυτό είναι απενεργοποιημένο, μπορούν να χρησιμοποιηθούν κεφαλαία"
+ INTL_ENABLED: "Ενσωμάτωση intl ενότητας"
+ INTL_ENABLED_HELP: "Χρησιμοποιήστε την Intl PHP ενότητα και διαταξινόμηση για να ταξινομήσετε τις συλλογές που βασίζονται στο UTF8"
+ VIEW_SITE_TIP: "Δείτε τη σελίδα"
+ TOOLS_DIRECT_INSTALL_TITLE: "Απευθείας Εγκατάσταση των Grav Πακέτων"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Εγκατάσταση Πακέτου με Απευθείας Μεταφόρτωση ZIP"
+ TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Μπορείτε να εγκαταστήσετε εύκολα ένα έγκυρο θέμα, πρόσθετο, ή ακόμα και πακέτο zip αναβάθμισης του Grav με αυτή τη μέθοδο. Αυτό το πακέτο δε χρειάζεται να είναι καταχωρημένο στο GPM και σας επιτρέπει να επιστρέψετε εύκολα σε προηγούμενη έκδοση ή να εγκαταστήσετε για δοκιμή."
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Εγκατάσταση Πακέτου μέσω Απομακρυσμένης Αναφοράς URL"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Εναλλακτικά, μπορείτε επίσης να αναφέρετε το πλήρες URL για το αρχείο ZIP του πακέτου και να το εγκαταστήσετε μέσω απομακρυσμένου URL."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Μεταφόρτωση και εγκατάσταση"
+ ROUTE_OVERRIDES: "Παρακάμψεις Διαδρομών"
+ ROUTE_DEFAULT: "Προεπιλεγμένη Διαδρομή"
+ ROUTE_CANONICAL: "Κανονική Διαδρομή"
+ ROUTE_ALIASES: "Ψευδώνυμα Διαδρομών"
diff --git a/user/plugins/admin/languages/en.yaml b/user/plugins/admin/languages/en.yaml
new file mode 100644
index 0000000..fcead6e
--- /dev/null
+++ b/user/plugins/admin/languages/en.yaml
@@ -0,0 +1,833 @@
+PLUGIN_ADMIN:
+ ADMIN_NOSCRIPT_MSG: "Please enable JavaScript in your browser."
+ ADMIN_BETA_MSG: "This is a Beta release! Use this in production at your own risk..."
+ ADMIN_REPORT_ISSUE: "Found an issue? Please report it on GitHub."
+ EMAIL_FOOTER: "Powered by Grav - The Modern Flat File CMS"
+ LOGIN_BTN: "Login"
+ LOGIN_BTN_FORGOT: "Forgot"
+ LOGIN_BTN_RESET: "Reset Password"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Send Reset Instructions"
+ LOGIN_BTN_CLEAR: "Clear Form"
+ LOGIN_BTN_CREATE_USER: "Create User"
+ LOGIN_LOGGED_IN: "You have been successfully logged in"
+ LOGIN_FAILED: "Login failed"
+ LOGGED_OUT: "You have been logged out"
+ RESET_NEW_PASSWORD: "Please enter a new password …"
+ RESET_LINK_EXPIRED: "Reset link has expired, please try again"
+ RESET_PASSWORD_RESET: "Password has been reset"
+ RESET_INVALID_LINK: "Invalid reset link used, please try again"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Instructions to reset your password have been sent to your email address"
+ FORGOT_FAILED_TO_EMAIL: "Failed to email instructions, please try again later"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Cannot reset password for %s, no email address is set"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "User with username %s does not exist"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Cannot reset password. This site is not configured to send emails"
+ FORGOT_EMAIL_SUBJECT: "%s Password Reset Request"
+ FORGOT_EMAIL_BODY: "
Password Reset
Dear %1$s,
A request was made on %4$s to reset your password.
Alternatively, copy the following URL into your browser's address bar:
%2$s
Kind regards,
%3$s
"
+ MANAGE_PAGES: "Manage Pages"
+ CONFIGURATION: "Configuration"
+ PAGES: "Pages"
+ PLUGINS: "Plugins"
+ PLUGIN: "Plugin"
+ THEMES: "Themes"
+ LOGOUT: "Logout"
+ BACK: "Back"
+ NEXT: "Next"
+ PREVIOUS: "Previous"
+ ADD_PAGE: "Add Page"
+ ADD_MODULAR: "Add Modular"
+ MOVE: "Move"
+ DELETE: "Delete"
+ UNSET: "Unset"
+ VIEW: "View"
+ SAVE: "Save"
+ NORMAL: "Normal"
+ EXPERT: "Expert"
+ EXPAND_ALL: "Expand All"
+ COLLAPSE_ALL: "Collapse All"
+ SECURE_DELETE_DESC: "Type DELETE and confirm"
+ ERROR: "Error"
+ CLOSE: "Close"
+ CANCEL: "Cancel"
+ CONTINUE: "Continue"
+ CONFIRM: "Confirm"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Confirmation Required"
+ MODAL_CHANGED_DETECTED_TITLE: "Changes Detected"
+ MODAL_CHANGED_DETECTED_DESC: "You have unsaved changes. Are you sure you want to leave without saving?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Confirmation Required"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Are you sure you want to delete this file? This action cannot be undone."
+ ADD_FILTERS: "Add Filters"
+ SEARCH_PAGES: "Search Pages"
+ VERSION: "Version"
+ WAS_MADE_WITH: "Was made with"
+ BY: "By"
+ UPDATE_THEME: "Update Theme"
+ UPDATE_PLUGIN: "Update Plugin"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "of this theme is now available"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "of this plugin is now available"
+ AUTHOR: "Author"
+ HOMEPAGE: "Homepage"
+ DEMO: "Demo"
+ BUG_TRACKER: "Bug Tracker"
+ KEYWORDS: "Keywords"
+ LICENSE: "License"
+ DESCRIPTION: "Description"
+ README: "Readme"
+ REMOVE_THEME: "Remove Theme"
+ INSTALL_THEME: "Install Theme"
+ THEME: "Theme"
+ BACK_TO_THEMES: "Back to Themes"
+ BACK_TO_PLUGINS: "Back to Plugins"
+ CHECK_FOR_UPDATES: "Check for Updates"
+ ADD: "Add"
+ CLEAR_CACHE: "Clear Cache"
+ CLEAR_CACHE_ALL_CACHE: "All Cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Assets Only"
+ CLEAR_CACHE_IMAGES_ONLY: "Images Only"
+ CLEAR_CACHE_CACHE_ONLY: "Cache Only"
+ CLEAR_CACHE_TMP_ONLY: "Tmp Only"
+ DASHBOARD: "Dashboard"
+ UPDATES_AVAILABLE: "Updates Available"
+ DAYS: "Days"
+ UPDATE: "Update"
+ BACKUP: "Backup"
+ BACKUPS: "Backups"
+ BACKUP_NOW: "Backup Now"
+ BACKUPS_STATS: "Backup Statistics"
+ BACKUPS_HISTORY: "Backup History"
+ BACKUPS_PURGE_CONFIG: "Backup Purge Configuration"
+ BACKUPS_PROFILES: "Backup Profiles"
+ BACKUPS_COUNT: "Number of Backups"
+ BACKUPS_PROFILES_COUNT: "Number of Profiles"
+ BACKUPS_TOTAL_SIZE: "Space Used"
+ BACKUPS_NEWEST: "Newest Backup"
+ BACKUPS_OLDEST: "Oldest Backup"
+ BACKUPS_PURGE: "Purge"
+ BACKUPS_NOT_GENERATED: "No backups have been generated yet..."
+ BACKUPS_PURGE_NUMBER: "Using %s of %s backup slots"
+ BACKUPS_PURGE_TIME: "%s days of backups left"
+ BACKUPS_PURGE_SPACE: "Using %s of %s"
+ BACKUP_DELETED: "Backup Successfully Deleted"
+ BACKUP_NOT_FOUND: "Backup Not Found"
+ BACKUP_DATE: "Backup Date"
+
+ STATISTICS: "Statistics"
+ TODAY: "Today"
+ WEEK: "Week"
+ MONTH: "Month"
+ LATEST_PAGE_UPDATES: "Latest Page Updates"
+ MAINTENANCE: "Maintenance"
+ UPDATED: "Updated"
+ MON: "Mon"
+ TUE: "Tue"
+ WED: "Wed"
+ THU: "Thu"
+ FRI: "Fri"
+ SAT: "Sat"
+ SUN: "Sun"
+ COPY: "Copy"
+ EDIT: "Edit"
+ CREATE: "Create"
+ GRAV_ADMIN: "Grav Admin"
+ GRAV_OFFICIAL_PLUGIN: "Grav Official Plugin"
+ GRAV_OFFICIAL_THEME: "Grav Official Theme"
+ PLUGIN_SYMBOLICALLY_LINKED: "This plugin is symbolically linked. Updates won't be detected."
+ THEME_SYMBOLICALLY_LINKED: "This theme is symbolically linked. Updates won't be detected"
+ REMOVE_PLUGIN: "Remove Plugin"
+ INSTALL_PLUGIN: "Install Plugin"
+ AVAILABLE: "Available"
+ INSTALLED: "Installed"
+ INSTALL: "Install"
+ ACTIVE_THEME: "Active Theme"
+ SWITCHING_TO: "Switching to"
+ SWITCHING_TO_DESCRIPTION: "By switching to a different theme, there is no guarantee that all the layout pages are supported, potentially causing errors when trying to load said pages."
+ SWITCHING_TO_CONFIRMATION: "Do you want to continue and switch to the theme"
+ CREATE_NEW_USER: "Create New User"
+ REMOVE_USER: "Remove User"
+ ACCESS_DENIED: "Access denied"
+ ACCOUNT_NOT_ADMIN: "your account does not have administrator permissions"
+ PHP_INFO: "PHP Info"
+ INSTALLER: "Installer"
+ AVAILABLE_THEMES: "Available Themes"
+ AVAILABLE_PLUGINS: "Available Plugins"
+ INSTALLED_THEMES: "Installed Themes"
+ INSTALLED_PLUGINS: "Installed Plugins"
+ BROWSE_ERROR_LOGS: "Browse Error Logs"
+ SITE: "Site"
+ INFO: "Info"
+ SYSTEM: "System"
+ USER: "User"
+ ADD_ACCOUNT: "Add Account"
+ SWITCH_LANGUAGE: "Switch Language"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Successfully enabled plugin"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Successfully disabled plugin"
+ SUCCESSFULLY_CHANGED_THEME: "Successfully changed default theme"
+ INSTALLATION_FAILED: "Installation failed"
+ INSTALLATION_SUCCESSFUL: "Installation successful"
+ UNINSTALL_FAILED: "Uninstall failed"
+ UNINSTALL_SUCCESSFUL: "Uninstall successful"
+ SUCCESSFULLY_SAVED: "Successfully saved"
+ SUCCESSFULLY_COPIED: "Successfully copied"
+ REORDERING_WAS_SUCCESSFUL: "Reordering was successful"
+ SUCCESSFULLY_DELETED: "Successfully deleted"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Successfully switched language"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "You have insufficient permissions for task"
+ CACHE_CLEARED: "Cache cleared"
+ METHOD: "Method"
+ ERROR_CLEARING_CACHE: "Error clearing cache"
+ AN_ERROR_OCCURRED: "An error occurred"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Your backup is ready for download"
+ DOWNLOAD_BACKUP: "Download backup"
+ PAGES_FILTERED: "Pages filtered"
+ NO_PAGE_FOUND: "No Page found"
+ INVALID_PARAMETERS: "Invalid Parameters"
+ NO_FILES_SENT: "No files sent"
+ EXCEEDED_FILESIZE_LIMIT: "Exceeded PHP configuration upload_max_filesize"
+ EXCEEDED_POSTMAX_LIMIT: "Exceeded PHP configuration post_max_size"
+ UNKNOWN_ERRORS: "Unknown errors"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Exceeded Grav configuration file size limit"
+ UNSUPPORTED_FILE_TYPE: "Unsupported file type"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Failed to move uploaded file"
+ FILE_UPLOADED_SUCCESSFULLY: "File uploaded successfully"
+ FILE_DELETED: "File deleted"
+ FILE_COULD_NOT_BE_DELETED: "File could not be deleted"
+ FILE_NOT_FOUND: "File not found"
+ NO_FILE_FOUND: "No file found"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav was successfully updated to"
+ GRAV_UPDATE_FAILED: "Grav update failed"
+ EVERYTHING_UPDATED: "Everything updated"
+ UPDATES_FAILED: "Updates failed"
+ AVATAR_BY: "Avatar by"
+ AVATAR_UPLOAD_OWN: "Or upload your own..."
+ LAST_BACKUP: "Last Backup"
+ FULL_NAME: "Full name"
+ USERNAME: "Username"
+ EMAIL: "Email"
+ USERNAME_EMAIL: "Username or Email"
+ PASSWORD: "Password"
+ PASSWORD_CONFIRM: "Confirm Password"
+ TITLE: "Title"
+ LANGUAGE: "Language"
+ ACCOUNT: "Account"
+ EMAIL_VALIDATION_MESSAGE: "Must be a valid email address"
+ PASSWORD_VALIDATION_MESSAGE: "Password must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters"
+ LANGUAGE_HELP: "Set the favorite language"
+ MEDIA: "Media"
+ DEFAULTS: "Defaults"
+ SITE_TITLE: "Site Title"
+ SITE_TITLE_PLACEHOLDER: "Site wide title"
+ SITE_TITLE_HELP: "Default title for your site, often used in themes"
+ SITE_DEFAULT_LANG: "Default language"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Default language to be used by theme's tag"
+ SITE_DEFAULT_LANG_HELP: "Default language to be used by theme's tag"
+ DEFAULT_AUTHOR: "Default Author"
+ DEFAULT_AUTHOR_HELP: "A default author name, often used in themes or page content"
+ DEFAULT_EMAIL: "Default Email"
+ DEFAULT_EMAIL_HELP: "A default email to reference in themes or pages"
+ TAXONOMY_TYPES: "Taxonomy Types"
+ TAXONOMY_TYPES_HELP: "Taxonomy types must be defined here if you wish to use them in pages"
+ PAGE_SUMMARY: "Page Summary"
+ ENABLED: "Enabled"
+ ENABLED_HELP: "Enable page summary (the summary returns the same as the page content)"
+ 'YES': "Yes"
+ 'NO': "No"
+ SUMMARY_SIZE: "Summary Size"
+ SUMMARY_SIZE_HELP: "The amount of characters of a page to use as a content summary"
+ FORMAT: "Format"
+ FORMAT_HELP: "short = use the first occurrence of delimiter or size; long = summary delimiter will be ignored"
+ SHORT: "Short"
+ LONG: "Long"
+ DELIMITER: "Delimiter"
+ DELIMITER_HELP: "The summary delimiter (default '===')"
+ METADATA: "Metadata"
+ METADATA_HELP: "Default metadata values that will be displayed on every page unless overridden by the page"
+ NAME: "Name"
+ CONTENT: "Content"
+ SIZE: "Size"
+ ACTION: "Action"
+ REDIRECTS_AND_ROUTES: "Redirects & Routes"
+ CUSTOM_REDIRECTS: "Custom Redirects"
+ CUSTOM_REDIRECTS_HELP: "routes to redirect to other pages. Standard Regex replacement is valid"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/your/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/your/redirect"
+ CUSTOM_ROUTES: "Custom Routes"
+ CUSTOM_ROUTES_HELP: "routes to alias to other pages. Standard Regex replacement is valid"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/your/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/your/route"
+ FILE_STREAMS: "File Streams"
+ DEFAULT: "Default"
+ PAGE_MEDIA: "Page Media"
+ OPTIONS: "Options"
+ PUBLISHED: "Published"
+ PUBLISHED_HELP: "By default, a page is published unless you explicitly set published: false or via a publish_date being in the future, or unpublish_date in the past"
+ DATE: "Date"
+ DATE_HELP: "The date variable allows you to specifically set a date associated with this page."
+ PUBLISHED_DATE: "Published Date"
+ PUBLISHED_DATE_HELP: "Can provide a date to automatically trigger publication."
+ UNPUBLISHED_DATE: "Unpublished Date"
+ UNPUBLISHED_DATE_HELP: "Can provide a date to automatically trigger un-publication."
+ ROBOTS: "Robots"
+ TAXONOMIES: "Taxonomies"
+ TAXONOMY: "Taxonomy"
+ ADVANCED: "Advanced"
+ SETTINGS: "Settings"
+ FOLDER_NUMERIC_PREFIX: "Folder Numeric Prefix"
+ FOLDER_NUMERIC_PREFIX_HELP: "Numeric prefix that provides manual ordering and implies visibility"
+ FOLDER_NAME: "Folder Name"
+ FOLDER_NAME_HELP: "The folder name that will be stored in the filesystem for this page"
+ PARENT: "Parent"
+ DEFAULT_OPTION_ROOT: "- Root -"
+ DEFAULT_OPTION_SELECT: "- Select -"
+ DISPLAY_TEMPLATE: "Display Template"
+ DISPLAY_TEMPLATE_HELP: "The page type that translates into which twig template renders the page"
+ BODY_CLASSES: "Body Classes"
+ ORDERING: "Ordering"
+ PAGE_ORDER: "Page Order"
+ OVERRIDES: "Overrides"
+ MENU: "Menu"
+ MENU_HELP: "The string to be used in a menu. If not set, Title will be used."
+ SLUG: "Slug"
+ SLUG_HELP: "The slug variable allows you to specifically set the page's portion of the URL"
+ SLUG_VALIDATE_MESSAGE: "A slug must contain only lowercase alphanumeric characters and dashes"
+ PROCESS: "Process"
+ PROCESS_HELP: "Control how pages are processed. Can be set per-page rather than globally"
+ DEFAULT_CHILD_TYPE: "Default Child Type"
+ USE_GLOBAL: "Use Global"
+ ROUTABLE: "Routable"
+ ROUTABLE_HELP: "If this page is reachable by a URL"
+ CACHING: "Caching"
+ VISIBLE: "Visible"
+ VISIBLE_HELP: "Determines if a page is visible in the navigation."
+ DISABLED: "Disabled"
+ ITEMS: "Items"
+ ORDER_BY: "Order By"
+ ORDER: "Order"
+ FOLDER: "Folder"
+ ASCENDING: "Ascending"
+ DESCENDING: "Descending"
+ ADD_MODULAR_CONTENT: "Add Modular Content"
+ PAGE_TITLE: "Page Title"
+ PAGE_TITLE_HELP: "The title of the page"
+ PAGE: "Page"
+ MODULAR_TEMPLATE: "Modular Template"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Filename"
+ PARENT_PAGE: "Parent Page"
+ HOME_PAGE: "Home page"
+ HOME_PAGE_HELP: "The page that Grav will use as the default landing page"
+ DEFAULT_THEME: "Default theme"
+ DEFAULT_THEME_HELP: "Set the default theme for Grav to use (default is Antimatter)"
+ TIMEZONE: "Timezone"
+ TIMEZONE_HELP: "Override the default timezone the server"
+ SHORT_DATE_FORMAT: "Short display date format"
+ SHORT_DATE_FORMAT_HELP: "Set the short date format that can be used by themes"
+ LONG_DATE_FORMAT: "Long display date format"
+ LONG_DATE_FORMAT_HELP: "Set the long date format that can be used by themes"
+ DEFAULT_ORDERING: "Default ordering"
+ DEFAULT_ORDERING_HELP: "Pages in a list will render using this order unless it is overridden"
+ DEFAULT_ORDERING_DEFAULT: "Default - based on folder name"
+ DEFAULT_ORDERING_FOLDER: "Folder - based on prefix-less folder name"
+ DEFAULT_ORDERING_TITLE: "Title - based on title field in header"
+ DEFAULT_ORDERING_DATE: "Date - based on date field in header"
+ DEFAULT_ORDER_DIRECTION: "Default order direction"
+ DEFAULT_ORDER_DIRECTION_HELP: "The direction of pages in a list"
+ DEFAULT_PAGE_COUNT: "Default page count"
+ DEFAULT_PAGE_COUNT_HELP: "Default maximum pages count in a list"
+ DATE_BASED_PUBLISHING: "Date-based publishing"
+ DATE_BASED_PUBLISHING_HELP: "Automatically (un)publish posts based on their date"
+ EVENTS: "Events"
+ EVENTS_HELP: "Enable or Disable specific events. Disabling these can break plugins"
+ REDIRECT_DEFAULT_ROUTE: "Redirect default route"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Automatically redirect to a page's default route"
+ LANGUAGES: "Languages"
+ SUPPORTED: "Supported"
+ SUPPORTED_HELP: "Comma separated list of 2 letter language codes (for example 'en,fr,de')"
+ TRANSLATIONS_ENABLED: "Translations enabled"
+ TRANSLATIONS_ENABLED_HELP: "Support translations in Grav, plugins and extensions"
+ TRANSLATIONS_FALLBACK: "Translations fallback"
+ TRANSLATIONS_FALLBACK_HELP: "Fallback through supported translations if active language doesn't exist"
+ ACTIVE_LANGUAGE_IN_SESSION: "Active language in session"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Store the active language in the session"
+ HTTP_HEADERS: "HTTP Headers"
+ EXPIRES: "Expires"
+ EXPIRES_HELP: "Sets the expires header. The value is in seconds."
+ CACHE_CONTROL: "HTTP Cache-Control"
+ CACHE_CONTROL_HELP: "Set to a valid cache-control value such as `no-cache, no-store, must-revalidate`"
+ LAST_MODIFIED: "Last modified"
+ LAST_MODIFIED_HELP: "Sets the last modified header that can help optimize proxy and browser caching"
+ ETAG: "ETag"
+ ETAG_HELP: "Sets the etag header to help identify when a page has been modified"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Sets the `Vary: Accept Encoding` header to help with proxy and CDN caching"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Markdown extra"
+ MARKDOWN_EXTRA_HELP: "Enable default support for Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Escape HTML elements in markdown extra fences"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Escapes HTML elements in markdown extra fences"
+ AUTO_LINE_BREAKS: "Auto line breaks"
+ AUTO_LINE_BREAKS_HELP: "Enable support for automatic line breaks in markdown"
+ AUTO_URL_LINKS: "Auto URL links"
+ AUTO_URL_LINKS_HELP: "Enable automatic conversion of URLs into HTML hyperlinks"
+ ESCAPE_MARKUP: "Escape markup"
+ ESCAPE_MARKUP_HELP: "Escape markup tags into HTML entities"
+ CACHING_HELP: "Global ON/OFF switch to enable/disable Grav caching"
+ CACHE_CHECK_METHOD: "Cache check method"
+ CACHE_CHECK_METHOD_HELP: "Select the method that Grav uses to check if page files have been modified."
+ CACHE_DRIVER: "Cache driver"
+ CACHE_DRIVER_HELP: "Choose which cache driver Grav should use. 'Auto Detect' attempts to find the best for you"
+ CACHE_PREFIX: "Cache prefix"
+ CACHE_PREFIX_HELP: "An identifier for part of the Grav key. Don't change unless you know what your doing."
+ CACHE_PREFIX_PLACEHOLDER: "Derived from base URL (override by entering random string)"
+ CACHE_PURGE_JOB: "Run Scheduled Purge Job"
+ CACHE_PURGE_JOB_HELP: "With the scheduler you can periodically clear out old Doctrine file cache folders with this job"
+ CACHE_CLEAR_JOB: "Run Scheduled Clear Job"
+ CACHE_CLEAR_JOB_HELP: "With the scheduler you can periodically clear the Grav Cache"
+ CACHE_JOB_TYPE: "Cache Job Type"
+ CACHE_JOB_TYPE_HELP: "Either clear with the 'standard' folders cache clear, or with 'all' folders"
+ CACHE_PURGE: "Purge Old Cache"
+ LIFETIME: "Lifetime"
+ LIFETIME_HELP: "Sets the cache lifetime in seconds. 0 = infinite"
+ GZIP_COMPRESSION: "Gzip compression"
+ GZIP_COMPRESSION_HELP: "Enable GZip compression of the Grav page for increased performance."
+ TWIG_TEMPLATING: "Twig Templating"
+ TWIG_CACHING: "Twig caching"
+ TWIG_CACHING_HELP: "Control the Twig caching mechanism. Leave this enabled for best performance."
+ TWIG_DEBUG: "Twig debug"
+ TWIG_DEBUG_HELP: "Allows the option of not loading the Twig Debugger extension"
+ DETECT_CHANGES: "Detect changes"
+ DETECT_CHANGES_HELP: "Twig will automatically recompile the Twig cache if it detects any changes in Twig templates"
+ AUTOESCAPE_VARIABLES: "Autoescape variables"
+ AUTOESCAPE_VARIABLES_HELP: "Autoescapes all variables. This will break your site most likely"
+ ASSETS: "Assets"
+ CSS_PIPELINE: "CSS pipeline"
+ CSS_PIPELINE_HELP: "The CSS pipeline is the unification of multiple CSS resources into one file"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Include externals in CSS pipeline"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "External URLs sometimes have relative file references and shouldn't be pipelined"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "CSS pipeline render first"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Render the CSS pipeline before any other CSS references that are not included"
+ CSS_MINIFY: "CSS minify"
+ CSS_MINIFY_HELP: "Minify the CSS during pipelining"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "CSS minify Windows override"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Minify Override for Windows platforms. False by default due to ThreadStackSize"
+ CSS_REWRITE: "CSS rewrite"
+ CSS_REWRITE_HELP: "Rewrite any CSS relative URLs during pipelining"
+ JAVASCRIPT_PIPELINE: "JavaScript pipeline"
+ JAVASCRIPT_PIPELINE_HELP: "The JS pipeline is the unification of multiple JS resources into one file"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Include externals in JS pipeline"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "External URLs sometimes have relative file references and shouldn't be pipelined"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "JS pipeline render first"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Render the JS pipeline before any other JS references that are not included"
+ JAVASCRIPT_MINIFY: "JavaScript minify"
+ JAVASCRIPT_MINIFY_HELP: "Minify the JS during pipelining"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Enable timestamps on assets"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Enable asset timestamps"
+ COLLECTIONS: "Collections"
+ ERROR_HANDLER: "Error handler"
+ DISPLAY_ERRORS: "Display errors"
+ DISPLAY_ERRORS_HELP: "Display full backtrace-style error page"
+ LOG_ERRORS: "Log errors"
+ LOG_ERRORS_HELP: "Log errors to /logs folder"
+ LOG_HANDLER: "Log handler"
+ LOG_HANDLER_HELP: "Where to output the logs"
+ SYSLOG_FACILITY: "Syslog facility"
+ SYSLOG_FACILITY_HELP: "Syslog facility for output"
+ DEBUGGER: "Debugger"
+ DEBUGGER_HELP: "Enable Grav debugger and following settings"
+ DEBUG_TWIG: "Debug Twig"
+ DEBUG_TWIG_HELP: "Enable debugging of Twig templates"
+ SHUTDOWN_CLOSE_CONNECTION: "Shutdown close connection"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Close the connection before calling onShutdown(). false for debugging"
+ DEFAULT_IMAGE_QUALITY: "Default image quality"
+ DEFAULT_IMAGE_QUALITY_HELP: "Default image quality to use when resampling or caching images (85%)"
+ CACHE_ALL: "Cache all images"
+ CACHE_ALL_HELP: "Run all images through Grav's cache system even if they have no media manipulations"
+ IMAGES_DEBUG: "Image debug watermark"
+ IMAGES_DEBUG_HELP: "Show an overlay over images indicating the pixel depth of the image when working with retina for example"
+ IMAGES_SEOFRIENDLY: "SEO-Friendly Image names"
+ IMAGES_SEOFRIENDLY_HELP: "When enabled, the image name is displayed first, then a smaller hash to reflect processed operations"
+ UPLOAD_LIMIT: "File upload limit"
+ UPLOAD_LIMIT_HELP: "Set maximum upload size in bytes (0 is unlimited)"
+ ENABLE_MEDIA_TIMESTAMP: "Enable timestamps on media"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Appends a timestamp based on last modified date to each media item"
+ SESSION: "Session"
+ SESSION_ENABLED_HELP: "Enable session support within Grav"
+ TIMEOUT: "Timeout"
+ TIMEOUT_HELP: "Sets the session timeout in seconds"
+ SESSION_NAME_HELP: "An identifier used to form the name of the session cookie"
+ SESSION_UNIQUENESS: "Unique string"
+ SESSION_UNIQUENESS_HELP: "MD5 hash of Grav's root path, ie `GRAV_ROOT` (default) or a based on the random `security.salt` string."
+ ABSOLUTE_URLS: "Absolute URLs"
+ ABSOLUTE_URLS_HELP: "Absolute or relative URLs for `base_url`"
+ PARAMETER_SEPARATOR: "Parameter separator"
+ PARAMETER_SEPARATOR_HELP: "Separator for passed parameters that can be changed for Apache on Windows"
+ TASK_COMPLETED: "Task completed"
+ EVERYTHING_UP_TO_DATE: "Everything is up to date"
+ UPDATES_ARE_AVAILABLE: "update(s) are available"
+ IS_AVAILABLE_FOR_UPDATE: "is available for update"
+ IS_NOW_AVAILABLE: "is now available"
+ CURRENT: "Current"
+ UPDATE_GRAV_NOW: "Update Grav Now"
+ GRAV_SYMBOLICALLY_LINKED: "Grav is symbolically linked. Upgrade won't be available"
+ UPDATING_PLEASE_WAIT: "Updating... please wait, downloading"
+ OF_THIS: "of this"
+ OF_YOUR: "of your"
+ HAVE_AN_UPDATE_AVAILABLE: "have an update available"
+ SAVE_AS: "Save as"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Are you sure you want to delete this page and all its children? If the page is translated in other languages, those translations will be kept and must be deleted separately. Otherwise the page folder will be deleted along with its subpages. This action cannot be undone."
+ AND: "and"
+ UPDATE_AVAILABLE: "Update available"
+ METADATA_KEY: "Key (e.g. 'Keywords')"
+ METADATA_VALUE: "Value (e.g. 'Blog, Grav')"
+ USERNAME_HELP: "Username should be between 3 and 16 characters, including lowercase letters, numbers, underscores, and hyphens. Uppercase letters, spaces, and special characters are not allowed"
+ FULLY_UPDATED: "Fully Updated"
+ SAVE_LOCATION: "Save location"
+ PAGE_FILE: "Page Template"
+ PAGE_FILE_HELP: "Page template file name, and by default the display template for this page"
+ NO_USER_ACCOUNTS: "No user accounts found, please create one first..."
+ NO_USER_EXISTS: "No local user exists for this account, cannot save..."
+ REDIRECT_TRAILING_SLASH: "Redirect trailing slash"
+ REDIRECT_TRAILING_SLASH_HELP: "Perform a 301 redirect rather than transparently handling trailing slash URIs."
+ DEFAULT_DATE_FORMAT: "Page date format"
+ DEFAULT_DATE_FORMAT_HELP: "Page date format used by Grav. By default, Grav attempts to guess your date format, however you can specifiy a format using PHP's date syntax (e.g.: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Guess automatically"
+ IGNORE_FILES: "Ignore files"
+ IGNORE_FILES_HELP: "Specific files to ignore when processing pages"
+ IGNORE_FOLDERS: "Ignore folders"
+ IGNORE_FOLDERS_HELP: "Specific folders to ignore when processing pages"
+ HIDE_EMPTY_FOLDERS: "Hide empty folders"
+ HIDE_EMPTY_FOLDERS_HELP: "If folder has no .md file, should it be hidden in navigation as well as being unroutable"
+ HTTP_ACCEPT_LANGUAGE: "Set language from browser"
+ HTTP_ACCEPT_LANGUAGE_HELP: "You can opt to try to set the language based on `http_accept_language` header tag in the browser"
+ OVERRIDE_LOCALE: "Override locale"
+ OVERRIDE_LOCALE_HELP: "Override the locale setting in PHP based on the current language"
+ REDIRECT: "Page redirect"
+ REDIRECT_HELP: "Enter a page route or external URL for this page to redirect to. e.g. `/some/route` or `http://somesite.com`"
+ PLUGIN_STATUS: "Plugin status"
+ INCLUDE_DEFAULT_LANG: "Include default language"
+ INCLUDE_DEFAULT_LANG_HELP: "This will prepend all URLs in the default language with the default language. e.g. `/en/blog/my-post`"
+ PAGES_FALLBACK_ONLY: "Pages fallback only"
+ PAGES_FALLBACK_ONLY_HELP: "Only 'fallback' to find page content through supported languages, default behavior is to display any language found if active language is missing"
+ ALLOW_URL_TAXONOMY_FILTERS: "URL Taxonomy Filters"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Page-based collections allow you to filter via `/taxonomy:value`."
+ REDIRECT_DEFAULT_CODE: "Default redirect code"
+ REDIRECT_DEFAULT_CODE_HELP: "The HTTP status code to use for redirects"
+ IGNORE_HIDDEN: "Ignore hidden"
+ IGNORE_HIDDEN_HELP: "Ignore all files and folders that begin with a DOT"
+ WRAPPED_SITE: "Wrapped site"
+ WRAPPED_SITE_HELP: "For themes/plugins to know if Grav is wrapped by another platform"
+ FALLBACK_TYPES: "Allowed fallback types"
+ FALLBACK_TYPES_HELP: "Allowed file types that can be found if accessed via Page route. Defaults to any supported media type."
+ INLINE_TYPES: "Inline fallback types"
+ INLINE_TYPES_HELP: "A list of file types that should be displayed inline rather than downloaded"
+ APPEND_URL_EXT: "Append URL extension"
+ APPEND_URL_EXT_HELP: "Will add a custom extension to the Page's URL. Note, this will mean Grav will look for `..twig` template"
+ PAGE_MODES: "Page Modes"
+ PAGE_TYPES: "Page Types"
+ PAGE_TYPES_HELP: "Determines the page types that Grav supports and the order determines which type to fall back to if the request is ambiguous"
+ ACCESS_LEVELS: "Access Levels"
+ GROUPS: "Groups"
+ GROUPS_HELP: "List of groups the user is part of"
+ ADMIN_ACCESS: "Admin Access"
+ SITE_ACCESS: "Site Access"
+ INVALID_SECURITY_TOKEN: "Invalid Security Token"
+ ACTIVATE: "Activate"
+ TWIG_UMASK_FIX: "Umask Fix"
+ TWIG_UMASK_FIX_HELP: "By default Twig creates cached files as 0755, fix switches this to 0775"
+ CACHE_PERMS: "Cache Permissions"
+ CACHE_PERMS_HELP: "Default cache folder perms. Usually 0755 or 0775 depending on setup"
+ REMOVE_SUCCESSFUL: "Remove Successful"
+ REMOVE_FAILED: "Remove Failed"
+ HIDE_HOME_IN_URLS: "Hide home route in URLs"
+ HIDE_HOME_IN_URLS_HELP: "Will ensure the default routes for any pages under home do not reference home's regular route"
+ TWIG_FIRST: "Process Twig First"
+ TWIG_FIRST_HELP: "If you enabled Twig page processing, then you can configure Twig to process before or after markdown"
+ SESSION_SECURE: "Secure"
+ SESSION_SECURE_HELP: "If true, indicates that communication for this cookie must be over an encrypted transmission. WARNING: Enable this only on sites that run exclusively on HTTPS"
+ SESSION_HTTPONLY: "HTTP Only"
+ SESSION_HTTPONLY_HELP: "If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed"
+ REVERSE_PROXY: "Reverse Proxy"
+ REVERSE_PROXY_HELP: "Enable this if you are behind a reverse proxy and you are having trouble with URLs containing incorrect ports"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Invalid frontmatter, could not save"
+ ADD_FOLDER: "Add Folder"
+ PROXY_URL: "Proxy URL"
+ PROXY_URL_HELP: "Enter the proxy HOST or IP and PORT"
+ NOTHING_TO_SAVE: "Nothing to Save"
+ FILE_ERROR_ADD: "An error occurred while trying to add the file"
+ FILE_ERROR_UPLOAD: "An error occurred while trying to upload the file"
+ FILE_UNSUPPORTED: "Unsupported file type"
+ ADD_ITEM: "Add item"
+ FILE_TOO_LARGE: "The file is too large to be uploaded, maximum allowed is %s according to your PHP settings. Increase your `post_max_size` PHP setting"
+ INSTALLING: "Installing"
+ LOADING: "Loading.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "The following dependencies need to be fulfilled first:"
+ ERROR_INSTALLING_PACKAGES: "Error while installing the package(s)"
+ INSTALLING_DEPENDENCIES: "Installing dependencies..."
+ INSTALLING_PACKAGES: "Installing package(s).."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Package(s) successfully installed."
+ READY_TO_INSTALL_PACKAGES: "Ready to install the package(s)"
+ PACKAGES_NOT_INSTALLED: "Packages not installed"
+ PACKAGES_NEED_UPDATE: "Packages already installed, but too old"
+ PACKAGES_SUGGESTED_UPDATE: "Packages already installed, and version is ok, but will be updated to keep you up to date"
+ REMOVE_THE: "Remove the %s"
+ CONFIRM_REMOVAL: "Are you sure you want to delete this %s?"
+ REMOVED_SUCCESSFULLY: "%s removed successfully"
+ ERROR_REMOVING_THE: "Error removing the %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "The %s required the following dependencies, which are not required by other installed packages. If you are not using them, you can remove them directly from here."
+ READY_TO_UPDATE_PACKAGES: "Ready to update the package(s)"
+ ERROR_UPDATING_PACKAGES: "Error while updating the package(s)"
+ UPDATING_PACKAGES: "Updating package(s).."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Package(s) successfully updated."
+ UPDATING: "Updating"
+ GPM_RELEASES: "GPM Releases"
+ GPM_RELEASES_HELP: "Choose 'Testing' to install beta or testing versions"
+ GPM_METHOD: "Remote Fetch Method"
+ GPM_METHOD_HELP: "When set to Auto, Grav will determine if fopen is available and use it, otherwise fall back to cURL. To force the use of one or the other switch the setting."
+ GPM_VERIFY_PEER: "Remote Verify Peer (SSL)"
+ GPM_VERIFY_PEER_HELP: "Some providers seems to fail verifying getgrav.org SSL certificate, causing GPM to not work. If this is the case for you, turning off this setting might help"
+ AUTO: "Auto"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stable"
+ TESTING: "Testing"
+ FRONTMATTER_PROCESS_TWIG: "Process frontmatter Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "When enabled you can use Twig config variables in page front matter"
+ FRONTMATTER_IGNORE_FIELDS: "Ignore frontmatter fields"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Certain frontmatter fields may contain Twig but should not be processed, such as 'forms'"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Package %s installed successfully"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Parent setting order, ordering disabled"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Page is not visible, ordering disabled"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Ordering via the admin is unsupported because there are more than 200 siblings"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Page ordering is disabled for this page because Folder Numeric Prefix is not enabled"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "NOTE: You cannot add media files until you save the page. Just click 'Save' on top"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "NOTE: Page must be saved before you can upload files to it."
+ DROP_FILES_HERE_TO_UPLOAD: "Drop your files here or click in this area"
+ INSERT: "Insert"
+ UNDO: "Undo"
+ REDO: "Redo"
+ HEADERS: "Headers"
+ BOLD: "Bold"
+ ITALIC: "Italic"
+ STRIKETHROUGH: "Strikethrough"
+ SUMMARY_DELIMITER: "Summary Delimiter"
+ LINK: "Link"
+ IMAGE: "Image"
+ BLOCKQUOTE: "Blockquote"
+ UNORDERED_LIST: "Unordered List"
+ ORDERED_LIST: "Ordered List"
+ EDITOR: "Editor"
+ PREVIEW: "Preview"
+ FULLSCREEN: "Fullscreen"
+ MODULAR: "Modular"
+ MODULAR_SETUP: "Modular Setup"
+ NON_ROUTABLE: "Non-Routable"
+ NON_MODULAR: "Non-Modular"
+ NON_VISIBLE: "Non-Visible"
+ NON_PUBLISHED: "Non-Published"
+ CHARACTERS: "characters"
+ PUBLISHING: "Publishing"
+ NOTIFICATIONS: "Notifications"
+ MEDIA_TYPES: "Media Types"
+ IMAGE_OPTIONS: "Image options"
+ MIME_TYPE: "Mime Type"
+ THUMB: "Thumb"
+ TYPE: "Type"
+ FILE_EXTENSION: "File Extension"
+ LEGEND: "Page Legend"
+ MEMCACHE_SERVER: "Memcache server"
+ MEMCACHE_SERVER_HELP: "The Memcache server address"
+ MEMCACHE_PORT: "Memcache port"
+ MEMCACHE_PORT_HELP: "The Memcache server port"
+ MEMCACHED_SERVER: "Memcached server"
+ MEMCACHED_SERVER_HELP: "The Memcached server address"
+ MEMCACHED_PORT: "Memcached port"
+ MEMCACHED_PORT_HELP: "The Memcached server port"
+ REDIS_SERVER: "Redis server"
+ REDIS_SERVER_HELP: "The Redis server address"
+ REDIS_PORT: "Redis port"
+ REDIS_PORT_HELP: "The Redis server port"
+ REDIS_PASSWORD: "Redis password/secret"
+ ALL: "All"
+ FROM: "from"
+ TO: "to"
+ RELEASE_DATE: "Release Date"
+ SORT_BY: "Sort By"
+ RESOURCE_FILTER: "Filter..."
+ FORCE_SSL: "Force SSL"
+ FORCE_SSL_HELP: "Globally force SSL, if enabled when the site is reached through HTTP, Grav sends a redirect to the HTTPS page"
+ NEWS_FEED: "News Feed"
+ EXTERNAL_URL: "External URL"
+ SESSION_PATH: "The session path"
+ SESSION_PATH_HELP: "Use only if you choose a custom base URL (you rewrite the site domain / subfolder)"
+ CUSTOM_BASE_URL: "Custom base URL"
+ CUSTOM_BASE_URL_HELP: "Use if you want to rewrite the site domain or use a different subfolder than the one used by Grav. Example: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Cannot use "%s" outside of pages.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Unable to upload file %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Unable to move file %s to "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Cancel upload'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Are you sure you want to cancel this upload?'
+ DROPZONE_DEFAULT_MESSAGE: 'Drop your files here or click in this area'
+ DROPZONE_FALLBACK_MESSAGE: 'Your browser does not support drag and drop file uploads.'
+ DROPZONE_FALLBACK_TEXT: 'Please use the fallback form below to upload your files like in the older days.'
+ DROPZONE_FILE_TOO_BIG: 'File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "You can't upload files of this type."
+ DROPZONE_MAX_FILES_EXCEEDED: "You can not upload any more files."
+ DROPZONE_REMOVE_FILE: "Remove file"
+ DROPZONE_RESPONSE_ERROR: "Server responded with {{statusCode}} code."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Enable Admin Caching"
+ ADMIN_CACHING_HELP: "Caching in the admin can be controlled independently from the front-end site"
+ DESTINATION_NOT_SPECIFIED: "Destination not specified"
+ UPLOAD_ERR_NO_TMP_DIR: "Missing a temporary folder"
+ SESSION_SPLIT: "Session Split"
+ SESSION_SPLIT_HELP: "Independent split sessions between site and other plugins (such as admin)"
+ ERROR_FULL_BACKTRACE: "Full Backtrace Error"
+ ERROR_SIMPLE: "Simple Error"
+ ERROR_SYSTEM: "System Error"
+ IMAGES_AUTO_FIX_ORIENTATION: "Fix orientation automatically"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Automatically fix the image orientation based on the Exif data"
+ REDIS_SOCKET: "Redis socket"
+ REDIS_SOCKET_HELP: "The Redis socket"
+ NOT_SET: "Not set"
+ PERMISSIONS: "Permissions"
+ NEVER_CACHE_TWIG: "Never Cache Twig"
+ NEVER_CACHE_TWIG_HELP: "Only cache content and process Twig every time for pages. Ignores twig_first setting."
+ ALLOW_WEBSERVER_GZIP: "Allow WebServer Gzip"
+ ALLOW_WEBSERVER_GZIP_HELP: "Off by default. When enabled, WebServer-configured Gzip/Deflate compression will work, but http connection will not be closed before onShutDown() event causing slower page loading"
+ OFFLINE_WARNING: "The connection to the GPM cannot be established"
+ CLEAR_IMAGES_BY_DEFAULT: "Clear image cache by default"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "By default processed images are cleared for all cache clears, this can be disabled"
+ CLI_COMPATIBILITY: "CLI Compatibility"
+ CLI_COMPATIBILITY_HELP: "Ensures that only non-volatile Cache drivers are used (file, redis, memcache, etc.)"
+ REINSTALL_PLUGIN: "Reinstall Plugin"
+ REINSTALL_THEME: "Reinstall Theme"
+ REINSTALL_THE: "Reinstall the %s"
+ CONFIRM_REINSTALL: "Are you sure you want to reinstall this %s?"
+ REINSTALLED_SUCCESSFULLY: "%s reinstalled successfully"
+ ERROR_REINSTALLING_THE: "Error reinstalling the %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Package %s reinstalled successfully"
+ REINSTALLATION_FAILED: "Reinstallation failed"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "The installed version is not the latest release. By clicking Continue, you'll remove the current version and install the latest available release"
+ TOOLS: "Tools"
+ DIRECT_INSTALL: "Direct Install"
+ NO_PACKAGE_NAME: "Package name not specified"
+ PACKAGE_EXTRACTION_FAILED: "Package extraction failed"
+ NOT_VALID_GRAV_PACKAGE: "Not a valid Grav package"
+ NAME_COULD_NOT_BE_DETERMINED: "Name could not be determined"
+ CANNOT_OVERWRITE_SYMLINKS: "Cannot overwrite symlinks"
+ ZIP_PACKAGE_NOT_FOUND: "ZIP package could not be found"
+ GPM_OFFICIAL_ONLY: "Official GPM Only"
+ GPM_OFFICIAL_ONLY_HELP: "Only allow direct installs from the official GPM repository only."
+ NO_CHILD_TYPE: "No child type for this rawroute"
+ SORTABLE_PAGES: "Sortable Pages:"
+ UNSORTABLE_PAGES: "Unsortable Pages"
+ ADMIN_SPECIFIC_OVERRIDES: "Admin Specific Overrides"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Children Display Order"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "The order that children of this page should be displayed in the 'Pages' view of Admin plugin"
+ PWD_PLACEHOLDER: "complex string at least 8 chars long"
+ PWD_REGEX: "Password Regex"
+ PWD_REGEX_HELP: "By default: Password must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters"
+ USERNAME_PLACEHOLDER: "lowercase chars only, e.g. 'admin'"
+ USERNAME_REGEX: "Username Regex"
+ USERNAME_REGEX_HELP: "By default: Only lowercase chars, digits, dashes, and underscores. 3 - 16 chars"
+ CONTENT_PADDING: "Content padding"
+ CONTENT_PADDING_HELP: "Enable/Disable content padding around content area to provide more space"
+ ENABLE_AUTO_METADATA: "Auto metadata from Exif"
+ ENABLE_AUTO_METADATA_HELP: "Automatically generate metadata files for images with exif information"
+ 2FA_TITLE: "2-Factor Authentication"
+ 2FA_INSTRUCTIONS: "##### 2-Factor Authentication\nYou have **2FA** enabled on this account. Please use your **2FA** app to enter the current **6-digit code** to complete the login process."
+ 2FA_REGEN_HINT: "Regenerating the secret will require you to update your authenticator app"
+ 2FA_LABEL: "Admin Access"
+ 2FA_FAILED: "Invalid 2-Factor Authentication code, please try again..."
+ 2FA_ENABLED: "2FA Enabled"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "2FA Secret"
+ 2FA_SECRET_HELP: "Scan this QR code into your [Authenticator App](https://learn.getgrav.org/admin-panel/2fa#apps). Also it's a good idea to backup the secret in a safe location, in case you need to reinstall your app. Check the [Grav docs](https://learn.getgrav.org/admin-panel/2fa) for more information "
+ 2FA_REGENERATE: "Regenerate"
+ FORCE_LOWERCASE_URLS: "Force lowercase URLs"
+ FORCE_LOWERCASE_URLS_HELP: "By default Grav will set all slugs and routes to be lowercase. With this set to false, Uppercase slugs and routes can be used"
+ INTL_ENABLED: "Intl module integration"
+ INTL_ENABLED_HELP: "Use Intl PHP module and collate to sort UTF8 based collections"
+ VIEW_SITE_TIP: "View site"
+ TOOLS_DIRECT_INSTALL_TITLE: "Direct Install of Grav Packages"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Install Package via Direct ZIP Upload"
+ TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "You can easily install a valid Grav theme, plugin, or even Grav update Zip package via this method. This package does not have to be registered via GPM and allows you to easily roll back to a prior version or install for testing."
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Install Package via Remote URL Reference"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Alternatively, you can also reference a full URL to the package ZIP file and install it via this remote URL."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Upload and install"
+ ROUTE_OVERRIDES: "Route Overrides"
+ ROUTE_DEFAULT: "Default Route"
+ ROUTE_CANONICAL: "Canonical Route"
+ ROUTE_ALIASES: "Route Aliases"
+ OPEN_NEW_TAB: "Open in new tab"
+ PAGEMEDIA_RESIZER: "> The following settings apply to images uploaded through the page media. Resize Width / Height will automatically resize down and proportionally an image if exceeds the limits set in the inputs. Resolution min and max values define the size ranges for uploaded images. Set the fields to 0 to prevent any manipulation."
+ SESSION_INITIALIZE: "Initialize Session"
+ SESSION_INITIALIZE_HELP: "Makes Grav to start a session. This feature is needed to make any user interaction to work, such as login, forms etc. Admin plugin isn't affected by this setting."
+ STRICT_YAML_COMPAT: "YAML Compatibility"
+ STRICT_YAML_COMPAT_HELP: "Falls back to Symfony 2.4 YAML parser if Native or 3.4 parser fails"
+ STRICT_TWIG_COMPAT: "Twig Compatibility"
+ STRICT_TWIG_COMPAT_HELP: "Enables deprecated Twig autoescape setting. When disabled, |raw filter is required to output HTML as Twig will autoescape output"
+ SCHEDULER: "Scheduler"
+ SCHEDULER_INSTALL_INSTRUCTIONS: "Install Instructions"
+ SCHEDULER_INSTALLED_READY: "Installed and Ready"
+ SCHEDULER_CRON_NA: "Cron Not Available"
+ SCHEDULER_NOT_ENABLED: "Not Enabled"
+ SCHEDULER_SETUP: "Scheduler Setup"
+ SCHEDULER_INSTRUCTIONS: "The Grav Scheduler allows you to create and schedule custom jobs. It also provides a method for Grav plugins to integrate programmatically and dynamically add jobs to be run periodically."
+ SCHEDULER_POST_INSTRUCTIONS: "To enable the Scheduler's functionality, you must add the Grav Scheduler to your system's crontab file. Run the command above from the terminal to add it automatically. Once saved, refresh this page to see the status Ready."
+ SCHEDULER_JOBS: "Custom Scheduler Jobs"
+ SCHEDULER_STATUS: "Scheduler Status"
+ SCHEDULER_RUNAT: "Run At"
+ SCHEDULER_RUNAT_HELP: "Cron formatted 'at' syntax"
+ SCHEDULER_OUTPUT: "Output File"
+ SCHEDULER_OUTPUT_HELP: "The path/filename of the output file (from the root of the Grav installation)"
+ SCHEDULER_OUTPUT_TYPE: "Output Type"
+ SCHEDULER_OUTPUT_TYPE_HELP: "Either append to the same file each run, or overwrite the file with each run"
+ SCHEDULER_EMAIL: "Email"
+ SCHEDULER_EMAIL_HELP: "Email to send output to. NOTE: requires output file to be set"
+ SECURITY: "Security"
+ XSS_SECURITY: "XSS Security for Content"
+ XSS_WHITELIST_PERMISSIONS: "Whitelist Permissions"
+ XSS_WHITELIST_PERMISSIONS_HELP: "Users with these permissions will skip the XSS rules when saving content"
+ XSS_ON_EVENTS: "Filter On-events"
+ XSS_INVALID_PROTOCOLS: "Filter Invalid protocols"
+ XSS_INVALID_PROTOCOLS_LIST: "Invalid protocols list"
+ XSS_MOZ_BINDINGS: "Filter Moz bindings"
+ XSS_HTML_INLINE_STYLES: "Filter HTML inline styles"
+ XSS_DANGEROUS_TAGS: "Filter Dangerous HTML tags"
+ XSS_DANGEROUS_TAGS_LIST: "Dangerous HTML tags list"
+ XSS_ONSAVE_ISSUE: "Save failed: XSS issue detected..."
+ XSS_ISSUE: "NOTICE: Grav found potential XSS issues in %s"
+ UPLOADS_SECURITY: "Uploads Security"
+ UPLOADS_DANGEROUS_EXTENSIONS: "Dangerous Extensions"
+ UPLOADS_DANGEROUS_EXTENSIONS_HELP: "Block these extensions from being uploaded no matter the accepted MIME types"
+ REPORTS: "Reports"
+ LOGS: "Logs"
+ LOG_VIEWER_FILES: "Log Viewer Files"
+ LOG_VIEWER_FILES_HELP: "Files in /logs/ that will be available to view in Tools - Logs. e.g. 'grav' = /logs/grav.log"
+ BACKUPS_STORAGE_PURGE_TRIGGER: "Backup Storage Purge Trigger"
+ BACKUPS_MAX_COUNT: "Maximum Number of Backups"
+ BACKUPS_MAX_COUNT_HELP: "0 is unlimited"
+ BACKUPS_MAX_SPACE: "Maximum Backups Space"
+ BACKUPS_MAX_RETENTION_TIME: "Maximum Retention Time"
+ BACKUPS_MAX_RETENTION_TIME_APPEND: "in Days"
+ BACKUPS_PROFILE_NAME: "Backup Name"
+ BACKUPS_PROFILE_ROOT_FOLDER: "Root Folder"
+ BACKUPS_PROFILE_ROOT_FOLDER_HELP: "Can be an absolute path or a stream"
+ BACKUPS_PROFILE_EXCLUDE_PATHS: "Exclude Paths"
+ BACKUPS_PROFILE_EXCLUDE_PATHS_HELP: "Absolute paths to exclude, one per line"
+ BACKUPS_PROFILE_EXCLUDE_FILES: "Exclude Files"
+ BACKUPS_PROFILE_EXCLUDE_FILES_HELP: "Specific Files or Folders to exclude, one per line"
+ BACKUPS_PROFILE_SCHEDULE: "Enable Scheduled Job"
+ BACKUPS_PROFILE_SCHEDULE_AT: "Run Scheduled Job"
+ COMMAND: "Command"
+ EXTRA_ARGUMENTS: "Extra Arguments"
+ DEFAULT_LANG: "Override Default Language"
+ DEFAULT_LANG_HELP: "Default is the first supported language. This can be overridden by setting this option but it must be one of the supported languages"
+ DEBUGGER_PROVIDER: "Debugger Provider"
+ DEBUGGER_PROVIDER_HELP: "Default is PHP Debug Bar, but Clockwork browser extension provides for a less intrusive approach"
+ DEBUGGER_DEBUGBAR: "PHP Debug Bar"
+ DEBUGGER_CLOCKWORK: "Clockwork Browser Extension"
+ SHOW_SENSITIVE: "Show Sensitive Data"
+ SHOW_SENSITIVE_HELP: "Clockwork Provider ONLY: Censor potentially sensitive information (POST parameters, cookies, files, configuration and most array/object data in log messages)"
+ VALID_LINK_ATTRIBUTES: "Valid Link Attributes"
+ VALID_LINK_ATTRIBUTES_HELP: "Attributes that will be automatically added to the media HTML element"
+
diff --git a/user/plugins/admin/languages/es.yaml b/user/plugins/admin/languages/es.yaml
new file mode 100644
index 0000000..ef0418e
--- /dev/null
+++ b/user/plugins/admin/languages/es.yaml
@@ -0,0 +1,758 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "¡Ésta es una versión Beta! Utilízala en producción bajo tu propio riesgo..."
+ ADMIN_REPORT_ISSUE: "¿Encontraste algún problema de funcionamiento? Por favor, repórtalo en GitHub."
+ EMAIL_FOOTER: "Generado con Grav - El CMS moderno de archivos planos"
+ LOGIN_BTN: "Acceder"
+ LOGIN_BTN_FORGOT: "La olvidé"
+ LOGIN_BTN_RESET: "Restablecer contraseña"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Enviar instrucciones de restablecimiento"
+ LOGIN_BTN_CLEAR: "Limpiar formulario"
+ LOGIN_BTN_CREATE_USER: "Crear Usuario"
+ LOGIN_LOGGED_IN: "Has conseguido iniciar sesión con éxito"
+ LOGIN_FAILED: "El inicio de sesión falló"
+ LOGGED_OUT: "Te has desconectado"
+ RESET_NEW_PASSWORD: "Introduce una contraseña nueva …"
+ RESET_LINK_EXPIRED: "El enlace de restablecimiento ha caducado, por favor, inténtalo de nuevo"
+ RESET_PASSWORD_RESET: "La contraseña ha sido restablecida"
+ RESET_INVALID_LINK: "El enlace de restablecimiento no es válido, por favor, inténtalo otra vez"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Las instrucciones para restablecer tu contraseña han sido enviadas por email a %s"
+ FORGOT_FAILED_TO_EMAIL: "Falló al enviar las instrucciones por correo electrónico, por favor inténtalo de nuevo más tarde"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "No se puede restablecer la contraseña para %s, no se ha establecido una dirección de email"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "El usuario %s no existe"
+ FORGOT_EMAIL_NOT_CONFIGURED: "No se puede restablecer contraseña. Este sitio no está configurado para enviar emails"
+ FORGOT_EMAIL_SUBJECT: "%s Petición de restablecimiento de contraseña"
+ FORGOT_EMAIL_BODY: "
Restablecimiento de contraseña
Estimado %1$s,
Se ha realizado una petición el %4$s para restablecer tu contraseña.
Alternativamente, copia la siguiente URL en la barra de direcciones de tu navegador:
%2$s
Atentamente,
%3$s
"
+ MANAGE_PAGES: "Administrar Páginas"
+ CONFIGURATION: "Configuración"
+ PAGES: "Páginas"
+ PLUGINS: "Plugins"
+ PLUGIN: "Plugin"
+ THEMES: "Temas"
+ LOGOUT: "Salir"
+ BACK: "Atrás"
+ NEXT: "Siguiente"
+ PREVIOUS: "Anterior"
+ ADD_PAGE: "Agregar Página"
+ ADD_MODULAR: "Agregar Módulo"
+ MOVE: "Mover"
+ DELETE: "Borrar"
+ UNSET: "Anular"
+ VIEW: "Vista"
+ SAVE: "Guardar"
+ NORMAL: "Normal"
+ EXPERT: "Experto"
+ EXPAND_ALL: "Expandir Todo"
+ COLLAPSE_ALL: "Cerrar Todo"
+ ERROR: "Error"
+ CLOSE: "Cerrar"
+ CANCEL: "Cancelar"
+ CONTINUE: "Continuar"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Confirmación Requerida"
+ MODAL_CHANGED_DETECTED_TITLE: "Cambios detectados"
+ MODAL_CHANGED_DETECTED_DESC: "Usted tiene cambios sin guardar. ¿Está seguro que desea salir sin guardar?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Confirmación Requerida"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "¿Está seguro que desea eliminar este archivo? Esta acción no se puede deshacer."
+ ADD_FILTERS: "Agregar Filtros"
+ SEARCH_PAGES: "Buscar Páginas"
+ VERSION: "Versión"
+ WAS_MADE_WITH: "Fue hecho con"
+ BY: "Por"
+ UPDATE_THEME: "Actualizar Tema"
+ UPDATE_PLUGIN: "Actualizar Plugin"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "de este tema ya está disponible"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "de este plugin ya está disponible"
+ AUTHOR: "Autor"
+ HOMEPAGE: "Página de inicio"
+ DEMO: "Demo"
+ BUG_TRACKER: "Bug Tracker"
+ KEYWORDS: "Palabras Clave"
+ LICENSE: "Licencia"
+ DESCRIPTION: "Descripción"
+ README: "Léame"
+ REMOVE_THEME: "Eliminar Tema"
+ INSTALL_THEME: "Instalar Tema"
+ THEME: "Tema"
+ BACK_TO_THEMES: "Volver a Temas"
+ BACK_TO_PLUGINS: "Volver a Plugins"
+ CHECK_FOR_UPDATES: "Buscar Actualizaciones"
+ ADD: "Agregar"
+ CLEAR_CACHE: "Limpiar Cache"
+ CLEAR_CACHE_ALL_CACHE: "Limpiar Toda la Cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Solo Assets"
+ CLEAR_CACHE_IMAGES_ONLY: "Solo Imágenes"
+ CLEAR_CACHE_CACHE_ONLY: "Solo Cache"
+ CLEAR_CACHE_TMP_ONLY: "Tempo solamente"
+ DASHBOARD: "Panel"
+ UPDATES_AVAILABLE: "Actualizaciones disponibles"
+ DAYS: "Días"
+ UPDATE: "Actualizar"
+ BACKUP: "Respaldo"
+ BACKUPS: "Copias de seguridad"
+ BACKUP_NOW: "Realizar copia de seguridad ahora"
+ BACKUPS_STATS: "Estadísticas de copia de seguridad"
+ BACKUPS_HISTORY: "Historial de copia de seguridad"
+ BACKUPS_PURGE_CONFIG: "Configuración de depuración de copia de seguridad"
+ BACKUPS_PROFILES: "Perfiles de copia de seguridad"
+ BACKUPS_COUNT: "Número de copias de seguridad"
+ BACKUPS_PROFILES_COUNT: "Número de perfiles"
+ BACKUPS_TOTAL_SIZE: "Espacio utilizado"
+ BACKUPS_NEWEST: "Copia de seguridad más reciente"
+ BACKUPS_OLDEST: "Copia de seguridad más antigua"
+ BACKUPS_PURGE: "Purgar"
+ BACKUPS_NOT_GENERATED: "No se han generado copias de seguridad aún..."
+ BACKUPS_PURGE_NUMBER: "Usando %s de %s ranuras de respaldo"
+ BACKUPS_PURGE_TIME: "%s días de copias de seguridad restantes"
+ BACKUPS_PURGE_SPACE: "Usando %s de %s"
+ BACKUP_DELETED: "Copia de Seguridad Eliminada Correctamente"
+ BACKUP_NOT_FOUND: "Copia de seguridad no encontrada"
+ BACKUP_DATE: "Fecha de respaldo"
+ STATISTICS: "Estadísticas"
+ TODAY: "Hoy"
+ WEEK: "Semana"
+ MONTH: "Mes"
+ LATEST_PAGE_UPDATES: "Últimas Páginas Actualizadas"
+ MAINTENANCE: "Mantenimiento"
+ UPDATED: "Actualizado"
+ MON: "Lun"
+ TUE: "Mar"
+ WED: "Mie"
+ THU: "Jue"
+ FRI: "Vie"
+ SAT: "Sab"
+ SUN: "Dom"
+ COPY: "Copiar"
+ EDIT: "Editar"
+ CREATE: "Crear"
+ GRAV_ADMIN: "Grav Admin"
+ GRAV_OFFICIAL_PLUGIN: "Plugin Oficial de Grav"
+ GRAV_OFFICIAL_THEME: "Tema Oficial de Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Este plugin esta simbólicamente vinculado. No se podrá actualizar."
+ THEME_SYMBOLICALLY_LINKED: "Este tema esta simbólicamente vinculado. Las actualizaciones no se podrán eliminar."
+ REMOVE_PLUGIN: "Eliminar Plugin"
+ INSTALL_PLUGIN: "Instalar Plugin"
+ AVAILABLE: "Disponibile"
+ INSTALLED: "Instalado"
+ INSTALL: "Instalar"
+ ACTIVE_THEME: "Tema activo"
+ SWITCHING_TO: "Cambiando a"
+ SWITCHING_TO_DESCRIPTION: "Al cambiar de tema, no hay garantía que las estructuras de las páginas serán soportadas, potencialmente causará errores cuando se traten de cargaar las páginas."
+ SWITCHING_TO_CONFIRMATION: "Desea continuar y cambiar el tema"
+ CREATE_NEW_USER: "Crear Nuevo Usuario"
+ REMOVE_USER: "Eliminar Usuario"
+ ACCESS_DENIED: "Acceso denegado"
+ ACCOUNT_NOT_ADMIN: "su cuenta no tiene privilegios de administrador"
+ PHP_INFO: "PHP Info"
+ INSTALLER: "Instalador"
+ AVAILABLE_THEMES: "Temas Disponibles"
+ AVAILABLE_PLUGINS: "Plugins Disponibles"
+ INSTALLED_THEMES: "Temas Instalados"
+ INSTALLED_PLUGINS: "Plugins Instalados"
+ BROWSE_ERROR_LOGS: "Ver registros de errores"
+ SITE: "Sitio"
+ INFO: "Info"
+ SYSTEM: "Sistema"
+ USER: "Usuario"
+ ADD_ACCOUNT: "Añadir Cuenta"
+ SWITCH_LANGUAGE: "Cambiar Idioma"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Plugin activado exitosamente"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Plugin activado exitosamente"
+ SUCCESSFULLY_CHANGED_THEME: "El tema por defecto se cambió exitosamente"
+ INSTALLATION_FAILED: "Instalación fallida"
+ INSTALLATION_SUCCESSFUL: "Instalación exitosa"
+ UNINSTALL_FAILED: "Desinstalación fallida"
+ UNINSTALL_SUCCESSFUL: "Desinstalación exitosa"
+ SUCCESSFULLY_SAVED: "Guardado Exitosamente"
+ SUCCESSFULLY_COPIED: "Copiado Exitosamente"
+ REORDERING_WAS_SUCCESSFUL: "El cambio de orden fue exitoso"
+ SUCCESSFULLY_DELETED: "Eliminado Exitosamente"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Se cambió el idioma exitosamente"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Usted no tiene suficientes permisos para la tarea"
+ CACHE_CLEARED: "Cache borrado"
+ METHOD: "Método"
+ ERROR_CLEARING_CACHE: "Error al borrar el cache"
+ AN_ERROR_OCCURRED: "Ocurrió un error"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Su respaldo esta listo para descargar"
+ DOWNLOAD_BACKUP: "Descargar respaldo"
+ PAGES_FILTERED: "Páginas filtradas"
+ NO_PAGE_FOUND: "No se encontraron páginas"
+ INVALID_PARAMETERS: "Parámetros Inválidos"
+ NO_FILES_SENT: "No se enviaron archivos"
+ EXCEEDED_FILESIZE_LIMIT: "El límite de tamaño de archivo de la configuración de PHP fue exedido"
+ UNKNOWN_ERRORS: "Errores desconocidos"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "El límite de tamaño de archivo de configuración de Grav fue excedido"
+ UNSUPPORTED_FILE_TYPE: "Tipo de archivo no soportado"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Falló al mover archivo cargado."
+ FILE_UPLOADED_SUCCESSFULLY: "El archivo se cargó exitosamente"
+ FILE_DELETED: "Archivo Eliminado"
+ FILE_COULD_NOT_BE_DELETED: "El archivo no pudo ser eliminado"
+ FILE_NOT_FOUND: "Archivo no encontrado"
+ NO_FILE_FOUND: "No se encontraron archivos"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav fué exitosamente actualizado a"
+ GRAV_UPDATE_FAILED: "Falló la actualización de Grav"
+ EVERYTHING_UPDATED: "Todo está actualizado"
+ UPDATES_FAILED: "Fallaron actualizaciones"
+ AVATAR_BY: "Avatar por"
+ AVATAR_UPLOAD_OWN: "O subir tus propios..."
+ LAST_BACKUP: "Último Respaldo"
+ FULL_NAME: "Nombre completo"
+ USERNAME: "Usuario"
+ EMAIL: "Correo electrónico"
+ USERNAME_EMAIL: "Nombre de usuario o correo electrónico"
+ PASSWORD: "Contraseña"
+ PASSWORD_CONFIRM: "Confirmar Contraseña"
+ TITLE: "Título"
+ LANGUAGE: "Idioma"
+ ACCOUNT: "Cuenta"
+ EMAIL_VALIDATION_MESSAGE: "Debe ser una cuenta de correo electrónico válida"
+ PASSWORD_VALIDATION_MESSAGE: "La contraseña debe contener al menos un número y una letra mayúscula y minúscula, y al menos 8 o más caracteres"
+ LANGUAGE_HELP: "Establecer el idioma favorito"
+ MEDIA: "Multimedia"
+ DEFAULTS: "Defaults"
+ SITE_TITLE: "Título del sitio"
+ SITE_TITLE_PLACEHOLDER: "Título en todo el sitio"
+ SITE_TITLE_HELP: "Título default para el sitio, algunas veces utilizados en los temas"
+ SITE_DEFAULT_LANG: "Idioma predeterminado"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Idioma predeterminado que se usará con la etiqueta del tema"
+ SITE_DEFAULT_LANG_HELP: "Idioma predeterminado que se usará con la etiqueta del tema"
+ DEFAULT_AUTHOR: "Autor por defecto"
+ DEFAULT_AUTHOR_HELP: "Un nombre de autor por defecto, algunas veces usado en temas o en contenido de las páginas"
+ DEFAULT_EMAIL: "Correo electrónico por defecto"
+ DEFAULT_EMAIL_HELP: "Un correo electrónico para referenciar en temas o páginas"
+ TAXONOMY_TYPES: "Tipos de taxonomía"
+ TAXONOMY_TYPES_HELP: "Los tipos de taxonomía deben definirse aquí si desea utilizarlos en las páginas"
+ PAGE_SUMMARY: "Resumen de página"
+ ENABLED: "Habilitado"
+ ENABLED_HELP: "Habilitar resumen de página (el resumen regresará lo mismo que el contenido de página)"
+ 'YES': "Sí"
+ 'NO': "No"
+ SUMMARY_SIZE: "Tamaño del resumen"
+ SUMMARY_SIZE_HELP: "La cantidad de caracteres de la página para utilizarse como resumen del contenido"
+ FORMAT: "Formato"
+ FORMAT_HELP: "corto = utiliza la primera ocurrencia del delimitador o tamaño; largo = el delimitador será ignorado"
+ SHORT: "Corto"
+ LONG: "Largo"
+ DELIMITER: "Delimitador"
+ DELIMITER_HELP: "El delimitador del resumen (por defecto es '===')"
+ METADATA: "Metadatos"
+ METADATA_HELP: "Metadatos por defecto que serán mostrados en cada página, a menos que se sobrepongan en la página"
+ NAME: "Nombre"
+ CONTENT: "Contenido"
+ SIZE: "Tamaño"
+ ACTION: "Acción"
+ REDIRECTS_AND_ROUTES: "Redirecciones y Ruteos"
+ CUSTOM_REDIRECTS: "Redirecciones personalizadas"
+ CUSTOM_REDIRECTS_HELP: "rutas para direccionar a otras páginas. El reemplazo con Regex Estandar es válido"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/su/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/su/redireccion"
+ CUSTOM_ROUTES: "Rutas Personalizadas"
+ CUSTOM_ROUTES_HELP: "rutas de alias a otras páginas. El reemplazo con Regex Estandar es válido"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/su/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/su/ruta"
+ FILE_STREAMS: "Flujos de archivo"
+ DEFAULT: "Por defecto"
+ PAGE_MEDIA: "Multimedia de página"
+ OPTIONS: "Opciones"
+ PUBLISHED: "Publicado"
+ PUBLISHED_HELP: "Por default, las páginas son publicadas, a menos que explicitamente se establescan como published: false o que la fecha de publicación sea en el futuro con published_date, o que la fecha de despublicación sea en el pasado con unpublish_date"
+ DATE: "Fecha"
+ DATE_HELP: "La variable de fecha permite especificamente establecer una fecha asociada con esta página."
+ PUBLISHED_DATE: "Fecha de publicación"
+ PUBLISHED_DATE_HELP: "Puede proveer una fecha para disparar la publicación automáticamente."
+ UNPUBLISHED_DATE: "Fecha de Despublicación"
+ UNPUBLISHED_DATE_HELP: "Puedes proporcionar una fecha para ejecutar directamente la des-publicación."
+ ROBOTS: "Rotobs"
+ TAXONOMIES: "Taxonomías"
+ TAXONOMY: "Taxonomía"
+ ADVANCED: "Avanzado"
+ SETTINGS: "Parámetros"
+ FOLDER_NUMERIC_PREFIX: "Prefijo numérico de carpeta"
+ FOLDER_NUMERIC_PREFIX_HELP: "Prefijo numérico que proporciona orden manual e implica visibilidad"
+ FOLDER_NAME: "Nombre de la Carpeta"
+ FOLDER_NAME_HELP: "El nombre de la carpeta que se almacenará en el sistema de archivos de esta página"
+ PARENT: "Padre"
+ DEFAULT_OPTION_ROOT: "-Raíz-"
+ DEFAULT_OPTION_SELECT: "-Seleccione-"
+ DISPLAY_TEMPLATE: "Mostrar Plantilla"
+ DISPLAY_TEMPLATE_HELP: "El tipo de página, que se traduce en que plantilla twig genera la página"
+ BODY_CLASSES: "Clases del Body"
+ ORDERING: "Orden"
+ PAGE_ORDER: "Ordenar páginas"
+ OVERRIDES: "Sobreponer"
+ MENU: "Menu"
+ MENU_HELP: "El texto a utilizar en un menú. Si no se establece, se utilizará Título."
+ SLUG: "Slug"
+ SLUG_HELP: "La variable slug permite definir específicamente la porción del URL que corresponde a la página"
+ SLUG_VALIDATE_MESSAGE: "El slug debe contener sólo caracteres alfanuméricos en minúsculas y guiones"
+ PROCESS: "Procesar"
+ PROCESS_HELP: "Control de cómo se procesan páginas. Configurable por página en lugar de global"
+ DEFAULT_CHILD_TYPE: "Tipo de hijo por defecto"
+ USE_GLOBAL: "Uso Global"
+ ROUTABLE: "Enrutable"
+ ROUTABLE_HELP: "Si esta página es accesible desde una URL"
+ CACHING: "Almacenando en caché"
+ VISIBLE: "Visible"
+ VISIBLE_HELP: "Determina si una página es visible en la navegación."
+ DISABLED: "Deshabilitado"
+ ITEMS: "Elementos"
+ ORDER_BY: "Ordenar por"
+ ORDER: "Ordenar"
+ FOLDER: "Carpeta"
+ ASCENDING: "Ascendente"
+ DESCENDING: "Descendente"
+ ADD_MODULAR_CONTENT: "Adicioinar Contenido Modular"
+ PAGE_TITLE: "Título de Página"
+ PAGE_TITLE_HELP: "El título de la página"
+ PAGE: "Página"
+ MODULAR_TEMPLATE: "Plantilla Modular"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Nombre de Archivo"
+ PARENT_PAGE: "Página Padre"
+ HOME_PAGE: "Pagina Inicial"
+ HOME_PAGE_HELP: "La página que utilizará Grav como aterrizaje por defecto"
+ DEFAULT_THEME: "Tema por defecto"
+ DEFAULT_THEME_HELP: "Establecer el tema por defecto que utilizará Grav (default es Antimatter)"
+ TIMEZONE: "Zona Horaria"
+ TIMEZONE_HELP: "Sobreponer la zona horaria por defecto del servidor"
+ SHORT_DATE_FORMAT: "Short date format"
+ SHORT_DATE_FORMAT_HELP: "Establecer el formato de fecha corta que puede ser utilizado por los temas"
+ LONG_DATE_FORMAT: "Formato de fecha largo"
+ LONG_DATE_FORMAT_HELP: "Establecer el formato de fecha larga que puede ser utilizado por los temas"
+ DEFAULT_ORDERING: "Orden por defecto"
+ DEFAULT_ORDERING_HELP: "Las páginas de la lista serán generadas utilizando este orden a menos que sea sobrepuesto"
+ DEFAULT_ORDERING_DEFAULT: "Por defecto - basado en el nombre de la carpeta"
+ DEFAULT_ORDERING_FOLDER: "Carpeta - basado en el nombre de la carpeta sin prefijo"
+ DEFAULT_ORDERING_TITLE: "Título - basado en el campo title del encabezado"
+ DEFAULT_ORDERING_DATE: "Fecha - basado en el campo date del encabezado"
+ DEFAULT_ORDER_DIRECTION: "Dirección del orden por defecto"
+ DEFAULT_ORDER_DIRECTION_HELP: "La dirección de las páginas en una lista"
+ DEFAULT_PAGE_COUNT: "Cuenta de página por defecto"
+ DEFAULT_PAGE_COUNT_HELP: "Número máximo de cuenta de páginas en una lista"
+ DATE_BASED_PUBLISHING: "Publicación basado en fecha"
+ DATE_BASED_PUBLISHING_HELP: "Automáticamente (des)publicar páginas basado en la fecha"
+ EVENTS: "Eventos"
+ EVENTS_HELP: "Habilitar o Deshabilitar eventos específicos. Dehabilitarlos puede dañar plugins"
+ REDIRECT_DEFAULT_ROUTE: "Ruta de redirección por defecto"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Automáticamente redirigir a la ruta de páginas por defecto"
+ LANGUAGES: "Idiomas"
+ SUPPORTED: "Soportados"
+ SUPPORTED_HELP: "Lista de códigos de idioma de 2 letras separados por comas (por ejemplo 'en,fr,es')"
+ TRANSLATIONS_ENABLED: "Traducciones habilitadas"
+ TRANSLATIONS_ENABLED_HELP: "Soportar traduccioines en Grav, plugins y extensiones"
+ TRANSLATIONS_FALLBACK: "Traducciones de apoyo"
+ TRANSLATIONS_FALLBACK_HELP: "Retroceder a la traducción de apoyo si el idioma activo no existe"
+ ACTIVE_LANGUAGE_IN_SESSION: "Idioma activo en la sesión"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Almacenar el idioma activo en la sesión"
+ HTTP_HEADERS: "Encabezados HTTP"
+ EXPIRES: "Expira"
+ EXPIRES_HELP: "Establecer la expiración del encabezado. El valor en es en segundos."
+ CACHE_CONTROL: "Control-Cache HTTP"
+ CACHE_CONTROL_HELP: "Establece un control-cache válido como 'no-cache, no-almacenar, debe-revalidar'"
+ LAST_MODIFIED: "Último modificado"
+ LAST_MODIFIED_HELP: "Establece el úlimo encabezado modificado que puede optimizar el proxy el cache del navegador"
+ ETAG: "Etiqueta ETag"
+ ETAG_HELP: "Establece el encabezado etag para ayudar a identificar cuando una página ha sido modificada"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Establecer el encabezado `Vary: Accept Encoding` para ayudar con el proxy y el cache del CDN"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Markdown extra"
+ MARKDOWN_EXTRA_HELP: "Habilitar el soporte de Markdown Extra por defecto - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Escapar elementos HTML en vallas adicionales de markdown"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Escapa elementos HTML en vallas adicionales de markdown"
+ AUTO_LINE_BREAKS: "Saltos de línea automáticos"
+ AUTO_LINE_BREAKS_HELP: "Habilita el soporte de saltos de línea automáticos en markdown"
+ AUTO_URL_LINKS: "Enlaces URL Automáticos"
+ AUTO_URL_LINKS_HELP: "Habilita la conversión automática de URLs a hyperlinks HTML"
+ ESCAPE_MARKUP: "Marcas de escape"
+ ESCAPE_MARKUP_HELP: "Etiquetas de marcas de escape en entidades HTML"
+ CACHING_HELP: "Interruptor de encendido/apagado global para habilitar/deshabilitar almacenamiento en caché de Grav"
+ CACHE_CHECK_METHOD: "Método de comprobación de la caché"
+ CACHE_CHECK_METHOD_HELP: "Seleccione el método que Grav utiliza para comprobar si se han modificado los archivos de página."
+ CACHE_DRIVER: "Manejador de Cache"
+ CACHE_DRIVER_HELP: "Elegir qué controlador de caché debe usar Grav. 'Detectar Automáticamente' intenta encontrar el mejor para usted"
+ CACHE_PREFIX: "Prefijo de caché"
+ CACHE_PREFIX_HELP: "Es un identificador de parte escencial de Grav. No cambiar a menos que sepa lo que esta haciendo."
+ CACHE_PREFIX_PLACEHOLDER: "Derivado desde la URL base (anulado por ingreso de una cadena aleatoria)"
+ CACHE_PURGE_JOB: "Ejecutar trabajo de purga programado"
+ CACHE_CLEAR_JOB: "Ejecutar tarea de limpieza programada"
+ CACHE_CLEAR_JOB_HELP: "Con el planificador puedes borrar periódicamente la caché de Grav"
+ CACHE_PURGE: "Vaciar caché antigua"
+ LIFETIME: "Tiempo de vida"
+ LIFETIME_HELP: "Establece la duración del caché en segundos. 0 = infinito"
+ GZIP_COMPRESSION: "Compresión gzip"
+ GZIP_COMPRESSION_HELP: "Permitir la compresión GZip de Grav (paginas) para un mejor rendimiento."
+ TWIG_TEMPLATING: "Plantillas Twig"
+ TWIG_CACHING: "Caché de Twig"
+ TWIG_CACHING_HELP: "Controla el mecanismo de almacenamiento en caché de Twig. Deje este habilitado para un mejor rendimiento."
+ TWIG_DEBUG: "Depuración de Twig"
+ TWIG_DEBUG_HELP: "Habilita la opción de no cargar la extensión del depurador de Twig"
+ DETECT_CHANGES: "Detectar cambios"
+ DETECT_CHANGES_HELP: "Twig recompilará automáticamente el caché de Twig si detecta cambios en las plantillas de Twig"
+ AUTOESCAPE_VARIABLES: "Variables de autoescape"
+ AUTOESCAPE_VARIABLES_HELP: "Autoescapa todas las variables. Esto probablemente romperá su sitio"
+ ASSETS: "Activos"
+ CSS_PIPELINE: "Canalización de CSS"
+ CSS_PIPELINE_HELP: "La canalización de CSS es la unificación de múltiples recursos CSS en un archivo"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Incluir externos en el desarrollo CSS"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Las URLs externas algunas veces tienen referencias relativas de archivo y no deberían ser conectadas"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Interpretar primero el flujo CSS"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Interpretar el flujo CSS antes de cualquier otra referencia CSS que no estén incluidas"
+ CSS_MINIFY: "Minificar CSS"
+ CSS_MINIFY_HELP: "Minificar CSS durante la canalización"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "Anulación de minificación de CSS en Windows"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Anula la minificación en plataformas Windows. Falso por defecto debido a ThreadStackSize"
+ CSS_REWRITE: "Reescritura CSS"
+ CSS_REWRITE_HELP: "Reescribir cualquier URL relativa de CSS durante la canalización"
+ JAVASCRIPT_PIPELINE: "Canalización de JavaScript"
+ JAVASCRIPT_PIPELINE_HELP: "La canalización JS es la unificación de múltiples recursos JS en un archivo"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Incluir recursos externos en el flujo de JS"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Las URLs externas algunas veces tienen referencias relativas de archivo y no deberían colocarse en el flujo"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Interpretar primero el flujo JS"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Interpretar el flujo JS antes de cualquier otra referencia JS que no esté incluida"
+ JAVASCRIPT_MINIFY: "Minificar JavaScript"
+ JAVASCRIPT_MINIFY_HELP: "Minificar JS en canalización"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Habilitar las marcas de tiempo en activos"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Habilitar las marcas de tiempo en los recursos"
+ COLLECTIONS: "Colecciones"
+ ERROR_HANDLER: "Manejador de Errores"
+ DISPLAY_ERRORS: "Mostrar errores"
+ DISPLAY_ERRORS_HELP: "Mostrar página de error con el estilo de traza inversa completo"
+ LOG_ERRORS: "Registro de Errores"
+ LOG_ERRORS_HELP: "Errores de registro a la carpeta /logs"
+ LOG_HANDLER: "Gestor de registro"
+ LOG_HANDLER_HELP: "Dónde enviar los registros"
+ DEBUGGER: "Depurador"
+ DEBUGGER_HELP: "Habilitar depurador de Grav y ajustes siguientes"
+ DEBUG_TWIG: "Depuración de twig"
+ DEBUG_TWIG_HELP: "Habilitar la depuración de plantillas Twig"
+ SHUTDOWN_CLOSE_CONNECTION: "Al apagar cierra la conexión"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Cerrar la conexión antes de llamar al onShutdown(). Falso para la depuración"
+ DEFAULT_IMAGE_QUALITY: "Calidad de imagen por defecto"
+ DEFAULT_IMAGE_QUALITY_HELP: "Calidad de imagen por defecto para ser utilizada cuando se muestruea o se almacenan en caché las imágenes (85%)"
+ CACHE_ALL: "Guardar imágenes en caché"
+ CACHE_ALL_HELP: "Guardar todas las imágenes en el caché de Grav, aun en los casos cundo no se han manipulado"
+ IMAGES_DEBUG: "Marca de agua de imágen de depuración"
+ IMAGES_DEBUG_HELP: "Cubrir las imágenes con un texto indicando la profundidad de pixeles cuando se trabaja con retina por ejemplo"
+ UPLOAD_LIMIT: "Tamaño límite para carga de archivos"
+ UPLOAD_LIMIT_HELP: "Establecer el máximo tamaño de archivo para ser cargado (0 es ilimitado)"
+ ENABLE_MEDIA_TIMESTAMP: "Habilitar marcas de tiempo en multimedia"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Agregar marcas de tiempo basadas en la última fecha de modificación en cada elemento multimedia"
+ SESSION: "Sesión"
+ SESSION_ENABLED_HELP: "Habilitar el soporte de sesión dentro de Grav"
+ TIMEOUT: "Fuera de tiempo"
+ TIMEOUT_HELP: "Establece el tiempo de espera de sesión en segundos"
+ SESSION_NAME_HELP: "Un identificador que se utiliza para formar el nombre de la cookie de sesión"
+ SESSION_UNIQUENESS: "Cadena única"
+ ABSOLUTE_URLS: "URL absoluta"
+ ABSOLUTE_URLS_HELP: "Direcciones URL absolutas o relativas para 'base_url'"
+ PARAMETER_SEPARATOR: "Separador de parámetro"
+ PARAMETER_SEPARATOR_HELP: "Separater for passed parameters that can be changed for Apache on Windows"
+ TASK_COMPLETED: "Tarea completada"
+ EVERYTHING_UP_TO_DATE: "Todo está actualizado"
+ UPDATES_ARE_AVAILABLE: "hay actualizaciones disponibles"
+ IS_AVAILABLE_FOR_UPDATE: "está disponible para su actualización"
+ IS_NOW_AVAILABLE: "está ahora disponible"
+ CURRENT: "Actual"
+ UPDATE_GRAV_NOW: "Actualizar Grav Ahora"
+ GRAV_SYMBOLICALLY_LINKED: "Grav está symbolicamente vinculado. No podrá ser actualizado"
+ UPDATING_PLEASE_WAIT: "Actualizado... por favor espere, descargando"
+ OF_THIS: "de esta"
+ OF_YOUR: "de su"
+ HAVE_AN_UPDATE_AVAILABLE: "Tiene una actualización disponible"
+ SAVE_AS: "Guardar como"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "¿Seguro que deseas eliminar esta página y todos sus hijos? Si la página está traducida en otros idiomas, se conservarán esas traducciones y deben ser eliminadas por separado. De otra manera, la carpeta de la página será eliminada con todas sus sub páginas. Esta acción no puede ser revertida."
+ AND: "y"
+ UPDATE_AVAILABLE: "Actualización disponible"
+ METADATA_KEY: "Key (e.g. 'Palabra clave')"
+ METADATA_VALUE: "Valor (e.g. 'Blog, Grav')"
+ USERNAME_HELP: "El nombre de usuario debe tener entre 3 y 16, incluyendo letras en minúsculas, números, guiones bajos y guiones. Las mayusculas, espacios y careacteres especiales no están permitidos"
+ FULLY_UPDATED: "Totalmente Actualizado"
+ SAVE_LOCATION: "Guardar ubicación"
+ PAGE_FILE: "Plantillas de Página"
+ PAGE_FILE_HELP: "Nombre de archivo de plantilla de página y plantilla de visualización por defecto"
+ NO_USER_ACCOUNTS: "No se encuentraron cuentas de usuario, por favor crear una..."
+ NO_USER_EXISTS: "No existe ningún usuario local en esta cuenta, no se puede guardar..."
+ REDIRECT_TRAILING_SLASH: "Redirigir barra final"
+ REDIRECT_TRAILING_SLASH_HELP: "Realice una redirección 301 en lugar de manejo transparente barra final"
+ DEFAULT_DATE_FORMAT: "Formato de fecha de página"
+ DEFAULT_DATE_FORMAT_HELP: "Formato de fecha de página utilizado por Grav. Por defecto, Grav intenta adivinar la fecha de formato, sin embargo se puede especificar un formato usando sintaxis de fecha de PHP (por ejemplo: H:i Y-m-d)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Adivinar automáticamente"
+ IGNORE_FILES: "Ignorar archivos"
+ IGNORE_FILES_HELP: "Archivos específicos para ignorar al procesar páginas"
+ IGNORE_FOLDERS: "Ignorar carpetas"
+ IGNORE_FOLDERS_HELP: "Archivos específicos para ignorar al procesar páginas"
+ HIDE_EMPTY_FOLDERS: "Ocultar carpetas vacías"
+ HTTP_ACCEPT_LANGUAGE: "Establece el idioma desde el navegador"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Usted puede optar por intentar establecer el idioma basado en etiquetas de cabecera de 'http_accept_language' en el navegador"
+ OVERRIDE_LOCALE: "Sobreponer la configuración regional"
+ OVERRIDE_LOCALE_HELP: "Sobreponer la configuración regional en PHP basado en el idioma actual"
+ REDIRECT: "Redirección de página"
+ REDIRECT_HELP: "Escriba una ruta de la página o URL externa para esta página para redirigir a por ejemplo, '/alguna/ruta' o 'http://algunsitio.com'"
+ PLUGIN_STATUS: "Estado plugin"
+ INCLUDE_DEFAULT_LANG: "Incluir idioma predeterminado"
+ INCLUDE_DEFAULT_LANG_HELP: "Esto antepondrá todas las URLs en el idioma por defecto con el idioma predeterminado. por ejemplo, '/es/blog/mi post'"
+ ALLOW_URL_TAXONOMY_FILTERS: "Filtros de URL por taxonomía"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Colecciones basadas en páginas le permiten filtrar por ' / taxonomía: valor '."
+ REDIRECT_DEFAULT_CODE: "Código de redirección por defecto"
+ REDIRECT_DEFAULT_CODE_HELP: "El código de Estado HTTP para redirecciones"
+ IGNORE_HIDDEN: "Ignorar ocultos"
+ IGNORE_HIDDEN_HELP: "Ignorar todos los archivos y carpetas que comienzan con un punto"
+ WRAPPED_SITE: "Sitio envuelto"
+ WRAPPED_SITE_HELP: "Para que los plugins/temas sepan si Grav esta envuelta en otra plataforma"
+ FALLBACK_TYPES: "Tipos alternativos permitidos"
+ FALLBACK_TYPES_HELP: "Tipos de archivos permitidos que se pueden encontrar si accede por la ruta de la página. Por defecto cualquier tipo de medios compatibles."
+ INLINE_TYPES: "Tipos alternativos en línea"
+ INLINE_TYPES_HELP: "Una lista de tipos de archivos que deben ser mostrados en línea en lugar de descargar"
+ APPEND_URL_EXT: "Añadir extensión de dirección URL"
+ APPEND_URL_EXT_HELP: "Agregará una extensión personalizada a URL de la página. Tenga en cuenta, que esto significa que Grav buscará la plantilla ' . . twig '"
+ PAGE_MODES: "Modo de Página"
+ PAGE_TYPES: "Tipos de páginas"
+ ACCESS_LEVELS: "Niveles de acceso"
+ GROUPS: "Grupos"
+ GROUPS_HELP: "Lista de grupos a los que el usuario forma parte de"
+ ADMIN_ACCESS: "Acceso de Administrador"
+ SITE_ACCESS: "Acceso al Sitio"
+ INVALID_SECURITY_TOKEN: "Clave de seguridad inválida"
+ ACTIVATE: "Activar"
+ TWIG_UMASK_FIX: "Correción Umask"
+ TWIG_UMASK_FIX_HELP: "Por defecto twig crea archivos caché como 0755, la corrección cambia esto a 0775"
+ CACHE_PERMS: "Permisos de Cache"
+ CACHE_PERMS_HELP: "Permisos de carpeta por defecto. Generalmente 0755 o 0775 según la configuración del servidor"
+ REMOVE_SUCCESSFUL: "Eliminación exitosa"
+ REMOVE_FAILED: "Eliminación fallar"
+ HIDE_HOME_IN_URLS: "Ocultar la ruta de la pagina inicial en las URL"
+ HIDE_HOME_IN_URLS_HELP: "Se asegurará que las rutas pdefecto para las páginas debajo de la pagina inicial no hacen referencia a la ruta regular de la pagina inicial"
+ TWIG_FIRST: "Tratar Twig Primero"
+ TWIG_FIRST_HELP: "Si usted ha habilitado el tratamiento Twig de la pagina, entones usted puedes configurar el tratamiento Twig suceder antes o después de markdown"
+ SESSION_SECURE: "Seguro"
+ SESSION_SECURE_HELP: "Si es Verdadero, indica que la comunicación para esta cookie debe ser sobre una transmisión encriptada. ALERTA: Habilitar esta opción solo en sitios que corran exclusivamente con HTTPS"
+ SESSION_HTTPONLY: "Sólo HTTP"
+ SESSION_HTTPONLY_HELP: "Si es verdadero, indica que las cookies deberían ser usadas solo sobre HTTP, y las modificaciones de JavaScript no son permitidas"
+ REVERSE_PROXY: "Proxy Reverso"
+ REVERSE_PROXY_HELP: "Habilitar esta opción si esta usted detras de un proxy reverso y usted tiene problemas con URLs que contienen puertos incorrectos"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmater no válido, no se pudo guardar"
+ ADD_FOLDER: "Agregar carpeta"
+ PROXY_URL: "Dirección URL del Proxy"
+ PROXY_URL_HELP: "Escribir el host o IP y puerto del Proxy"
+ NOTHING_TO_SAVE: "Nada que Guardar"
+ FILE_ERROR_ADD: "Ocurrió un error intentando agregar el archivo"
+ FILE_ERROR_UPLOAD: "Ocurrió un error intentando subir el archivo"
+ FILE_UNSUPPORTED: "Tipo de archivo no permitido"
+ ADD_ITEM: "Agregar elemento"
+ FILE_TOO_LARGE: "El archivo es demasiado grande para subirse, el máximo permitido es %s de acuerdo a tus ajustes en PHP. Incrementa el ajuste `post_max_size` en PHP"
+ INSTALLING: "Instalando"
+ LOADING: "Cargando…"
+ DEPENDENCIES_NOT_MET_MESSAGE: "Las siguientes dependencias necesitan ser cubiertas primero:"
+ ERROR_INSTALLING_PACKAGES: "Error mientras se instalaban el o los paquetes"
+ INSTALLING_DEPENDENCIES: "Instalando dependencias…"
+ INSTALLING_PACKAGES: "Instalando paquete(s)…"
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Paquete(s) instalado(s) satisfactoriamente."
+ READY_TO_INSTALL_PACKAGES: "Listo para instalar los paquetes"
+ PACKAGES_NOT_INSTALLED: "Los paquetes no se instalaron"
+ PACKAGES_NEED_UPDATE: "Los paquetes ya estaban instalados, pero demasiado anteriores"
+ PACKAGES_SUGGESTED_UPDATE: "Los paquetes ya estaba instalados y la versión está bien, pero serán actualizados para que estés al día"
+ REMOVE_THE: "Quitar el %s"
+ CONFIRM_REMOVAL: "¿Seguro que deseas eliminar este %s?"
+ REMOVED_SUCCESSFULLY: "%s quitado satisfactoriamente"
+ ERROR_REMOVING_THE: "Error quitando el %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "El %s requería las siguientes dependencias, que no son requeridas por otros paquetes instalados. Si no las estás usando, puedes quitarlas directamente desde ahí."
+ READY_TO_UPDATE_PACKAGES: "Listo para actualizar los paquetes"
+ ERROR_UPDATING_PACKAGES: "Error al actualizar los paquetes"
+ UPDATING_PACKAGES: "Actualizando los paquetes…"
+ PACKAGES_SUCCESSFULLY_UPDATED: "Los paquetes se actualizaron satisfactoriamente."
+ UPDATING: "Actualizando"
+ GPM_RELEASES: "Lanzamientos GPM"
+ GPM_RELEASES_HELP: "Elige 'Probando' para instalar versiones beta o en prueba"
+ GPM_METHOD: "Método de recuperación remota"
+ GPM_METHOD_HELP: "Cuando se pone en Automático, Grav determinará si está disponible fopen y lo usará, de otra forma se utilizará cURL. Para forzar el uso de uno u otro, cambiar la configuración."
+ GPM_VERIFY_PEER: "Verificación a distancia de peer (SSL)"
+ GPM_VERIFY_PEER_HELP: "Algunos proveedores parecen fallar en la verificación del certificado SSL de getgrav.org, lo cual causa que GPM no funcione. Si este es su caso, apagar esta configuración puede ayudar"
+ AUTO: "Automático"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Estable"
+ TESTING: "Pruebas"
+ FRONTMATTER_PROCESS_TWIG: "Procesar el Twig de texto preliminar"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Cuando esté habilitado, puedes usar las variables de configuración de Twig en la página inicial"
+ FRONTMATTER_IGNORE_FIELDS: "Ignorar campos de texto preliminar"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Ciertos campos de texto preliminar podrían contener Twig pero no deberían ser procesados, como los 'formularios'"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "El paquete %s se instaló satisfactoriamente"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "El orden esta deshabilitado debido a que ha sido establecido en el padre"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "El orden esta deshabilitado debido a que la página no es visible"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "El orden a través del admin no esta soportado debido a que contiene mas de 200 elementos hermanos"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Página de pedido está deshabilitada para esta página porque el prefijo numérico de carpeta no está activada"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "Nota: Usted no puede agregar archivos multimedia hasta que la página sea guardada. Solo haga clic en el botón de Guardar arriba"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "Nota: La página debe ser guardada antes de subir archivos."
+ DROP_FILES_HERE_TO_UPLOAD: "Suelta tus archivos aquí o dale clic a esta área"
+ INSERT: "Insertar"
+ UNDO: "Deshacer"
+ REDO: "Rehacer"
+ HEADERS: "Encabezados"
+ BOLD: "Negrita"
+ ITALIC: "Itálica"
+ STRIKETHROUGH: "Tachado"
+ SUMMARY_DELIMITER: "Delimitador de resumen"
+ LINK: "Enlace"
+ IMAGE: "Imagen"
+ BLOCKQUOTE: "Cita"
+ UNORDERED_LIST: "Lista sin órden"
+ ORDERED_LIST: "Lista ordenada"
+ EDITOR: "Editor"
+ PREVIEW: "Vista previa"
+ FULLSCREEN: "Pantalla completa"
+ MODULAR: "Modular"
+ NON_ROUTABLE: "No-Enrutable"
+ NON_MODULAR: "No modular"
+ NON_VISIBLE: "No-Visible"
+ NON_PUBLISHED: "No-Publicada"
+ CHARACTERS: "caracteres"
+ PUBLISHING: "Publicar"
+ NOTIFICATIONS: "Notificaciones"
+ MEDIA_TYPES: "Tipos de multimedia"
+ IMAGE_OPTIONS: "Opciones de imágenes"
+ MIME_TYPE: "Tipo Mime"
+ THUMB: "Miniatura"
+ TYPE: "Tipo"
+ FILE_EXTENSION: "Extensión de Archivo"
+ LEGEND: "Leyenda de página"
+ MEMCACHE_SERVER: "Servidor memcache"
+ MEMCACHE_SERVER_HELP: "Dirección del servidor Memcache"
+ MEMCACHE_PORT: "Puerto de memcache"
+ MEMCACHE_PORT_HELP: "Puerto del servidor Memcache"
+ MEMCACHED_SERVER: "Servidor Memcached"
+ MEMCACHED_SERVER_HELP: "Dirección del servidor Memcached"
+ MEMCACHED_PORT: "Puerto de memcached"
+ MEMCACHED_PORT_HELP: "Puerto del servidor Memcached"
+ REDIS_SERVER: "Servidor de Redis"
+ REDIS_SERVER_HELP: "Dirección del servidor Redis"
+ REDIS_PORT: "Puerto de Redis"
+ REDIS_PORT_HELP: "Puerto del servidor Redis"
+ REDIS_PASSWORD: "Contraseña/secreto Redis"
+ ALL: "Todo"
+ FROM: "de"
+ TO: "para"
+ RELEASE_DATE: "Fecha de lanzamiento"
+ SORT_BY: "Ordenar por"
+ RESOURCE_FILTER: "Filtrar..."
+ FORCE_SSL: "Forzar SSL"
+ FORCE_SSL_HELP: "Forzar SSL globalmente, si esta habilitado, cuando el sitio es requerido por medio de HTTP, Grav envía un direccionamiento a la página HTTPS"
+ NEWS_FEED: "Noticias"
+ EXTERNAL_URL: "URL externo"
+ SESSION_PATH: "La ruta de la sesión"
+ SESSION_PATH_HELP: "Úselo solo si ha elegido una URL base personalizada (usted ha reescrito el dominio del sitio /subcarpeta)"
+ CUSTOM_BASE_URL: "URL base personalizada"
+ CUSTOM_BASE_URL_HELP: "Úselo si usted quiere reescribir el dominio del sitio, o utiliza una subcarpeta diferente a la que Grav utiliza. Ejemplo: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'No puede utilizar "%s" fuera de las páginas.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'No puede subir archivo %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'No puede mover archivo %s a "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Cancelar carga'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: '¿Está seguro que quiere cancelar esta carga?'
+ DROPZONE_DEFAULT_MESSAGE: 'Suelte aquí sus archivos o click en esta área'
+ DROPZONE_FALLBACK_MESSAGE: 'Su navegador no soporta arrastrar y soltar para subir archivos.'
+ DROPZONE_FALLBACK_TEXT: 'Por favor utilice el formulario opcional de abajo para cargar sus archivos, como se hacía antes.'
+ DROPZONE_FILE_TOO_BIG: 'El archivo es muy grande ({{filesize}}MiB). Tamaño máximo permitido: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Usted no puede subir archivos de este tipo."
+ DROPZONE_MAX_FILES_EXCEEDED: "Usted no puede subir mas archivos."
+ DROPZONE_REMOVE_FILE: "Remover archivo"
+ DROPZONE_RESPONSE_ERROR: "El servidor respondió con el código: {{statusCode}}."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Habilitar Caché del Admin"
+ ADMIN_CACHING_HELP: "El caché del admin puede ser controlado independientemente de la página frontal"
+ DESTINATION_NOT_SPECIFIED: "Destino no especificado"
+ UPLOAD_ERR_NO_TMP_DIR: "No se encuentra la carpeta temporal"
+ SESSION_SPLIT: "Separación de sesión"
+ SESSION_SPLIT_HELP: "Separar sesiones independientes entre el sitio y otros plugins (como el Admin)"
+ ERROR_FULL_BACKTRACE: "Error Backtrace completo"
+ ERROR_SIMPLE: "Error simple"
+ ERROR_SYSTEM: "Error de sistema"
+ IMAGES_AUTO_FIX_ORIENTATION: "Corregir la orientación automáticamente"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Corrección automática de la orientación de la imagen basada en los datos Exif"
+ REDIS_SOCKET: "Socket Redis"
+ REDIS_SOCKET_HELP: "El Socket Redis"
+ NOT_SET: "No establecido"
+ PERMISSIONS: "Permisos"
+ NEVER_CACHE_TWIG: "Nunca Cachear Twig"
+ NEVER_CACHE_TWIG_HELP: "Solo cachear el contenido y procesar Twig cada ver para las páginas. Ingorar configuración twig_first."
+ ALLOW_WEBSERVER_GZIP: "Permitir Webserver Gzip"
+ ALLOW_WEBSERVER_GZIP_HELP: "Desactivado de forma predeterminada. Cuando esté activado, Webserver-configured compresión Gzip/Deflate funcionará, pero las conexiones http no serán cerradas antes del evento onShutDown() causando una carga más lenta de la página"
+ OFFLINE_WARNING: "No se puede establecer la conexión con GPM"
+ CLEAR_IMAGES_BY_DEFAULT: "Borrar cache de imágenes por default"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Por default las imágenes procesadas son eliminadas en todas las limpiezas de cache, esto puede ser deshabilitado"
+ CLI_COMPATIBILITY: "Compatibilidad de CLI"
+ CLI_COMPATIBILITY_HELP: "Asegura que se utilicen conductores de caché sólo no-volátil (archivo, redis, memcache, etcetera)."
+ REINSTALL_PLUGIN: "Reinstalar plugin"
+ REINSTALL_THEME: "Vuelva a instalar el tema"
+ REINSTALL_THE: "Vuelva a instalar el %s"
+ CONFIRM_REINSTALL: "¿Está seguro que desea volver a instalar este %s?"
+ REINSTALLED_SUCCESSFULLY: "%s instalado correctamente"
+ ERROR_REINSTALLING_THE: "Error de reinstalación del %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "El paquete %s se instaló satisfactoriamente"
+ REINSTALLATION_FAILED: "Reinstalación de error"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "La versión instalada no es la última. Al pulsar continuar, quitará la versión actual e instalará la última versión disponible"
+ TOOLS: "Herramientas"
+ DIRECT_INSTALL: "Instalación Directa"
+ NO_PACKAGE_NAME: "Nombre de paquete no especificado"
+ PACKAGE_EXTRACTION_FAILED: "Extracción de paquete fallido"
+ NOT_VALID_GRAV_PACKAGE: "No un paquete válido de Grav"
+ NAME_COULD_NOT_BE_DETERMINED: "No se pudo determinar el nombre"
+ CANNOT_OVERWRITE_SYMLINKS: "No pudieron sobre escribir los enlaces simbólicos"
+ ZIP_PACKAGE_NOT_FOUND: "No se pudo encontrar el paquete ZIP"
+ GPM_OFFICIAL_ONLY: "Sólo GPM Oficial"
+ GPM_OFFICIAL_ONLY_HELP: "Sólo permite la instalación directa desde el repositorio oficial de GPM."
+ NO_CHILD_TYPE: "Ningún \"child type\" para este \"rawroute\""
+ SORTABLE_PAGES: "Páginas que se puede ordenar:"
+ UNSORTABLE_PAGES: "Páginas sin orden"
+ ADMIN_SPECIFIC_OVERRIDES: "Reemplazos Especificos del Administrador"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Orden de visualización de los hijos"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "El orden en que los hijos de esta página deben mostrarse en la vista de 'Páginas' del plugin de Administración"
+ PWD_PLACEHOLDER: "compleja cadena de al menos 8 caracteres de largo"
+ PWD_REGEX: "Contraseña Regex"
+ PWD_REGEX_HELP: "La contraseña debe contener al menos un número y una letra mayúscula y minúscula, y al menos 8 o más caracteres"
+ USERNAME_PLACEHOLDER: "minúsculas, sólo caracteres. ej. 'admin'"
+ USERNAME_REGEX: "Nombre de usuario Regex"
+ USERNAME_REGEX_HELP: "Por defecto: sólo caracteres en minúsculas, dígitos, guiones y guiones bajos. 3 - 16 caracteres"
+ CONTENT_PADDING: "Acolchado para el contenido"
+ CONTENT_PADDING_HELP: "Habilitar o deshabilitar el acolchado del contenido alrededor del área de contenido para proporcionar mayor espacio"
+ ENABLE_AUTO_METADATA: "Auto metadata de Exif"
+ ENABLE_AUTO_METADATA_HELP: "Genera automáticamente los archivos de metadata para las imágenes con información exif"
+ 2FA_TITLE: "Autenticación de 2 Factores"
+ 2FA_INSTRUCTIONS: "##### Autenticación de 2 Factores (2FA)\nTienes **2FA** habilitado en esta cuenta. Por favor usa tu aplicación **2FA** para ingresar el **código de 6 dígitos** para completar el proceso de acceso."
+ 2FA_REGEN_HINT: "Regenerar el secreto requiere que actualice su app de autenticación"
+ 2FA_LABEL: "Acceso al Administrador"
+ 2FA_FAILED: "Código de Autentificación de 2-Factores inválido, por favor intente de nuevo..."
+ 2FA_ENABLED: "2FA Habilitado"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "Secreto 2FA"
+ 2FA_SECRET_HELP: "Escanee este código QR con su [App de Autenticación](https://learn.getgrav.org/admin-panel/2fa#apps). Además es una buena idea resguardar el secreto en una ubicación segura, en caso de que necesite reinstalar la app. Revise los [documentos Grav](https://learn.getgrav.org/admin-panel/2fa) para más información "
+ 2FA_REGENERATE: "Regenerar"
+ FORCE_LOWERCASE_URLS: "Forzar URLs en minúsculas"
+ FORCE_LOWERCASE_URLS_HELP: "De manera predeterminada Grav establecerá todos los slugs y rutas en minúsculas. Si se establece en falso, se podrán utilizar slugs y rutas en mayúsculas"
+ INTL_ENABLED: "Integración de modulo Intl"
+ INTL_ENABLED_HELP: "Utilizar el módulo PHP Intl y cotejar para ordenar colecciones basadas en UTF8"
+ VIEW_SITE_TIP: "Ver sitio"
+ TOOLS_DIRECT_INSTALL_TITLE: "Instalación Directa de Paquetes Grav"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Instalar Paquete a través de Carga Directa de ZIP"
+ TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Puede instalar fácilmente un tema, plugin Grav o incluso un paquete de actualización Grav con este método. El paquete no debe estar registrado via GPM y le permite fácilmente volver atrás a una versión anterior o instalarlo para pruebas."
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Instalar Paquete a través de Referencia URL Remota"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Alternativamente, puede referenciar una URL completa al archivo ZIP de paquete e instalarlo desde esta URL remota."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Cargar e instalar"
+ ROUTE_OVERRIDES: "Anulaciones de Ruta"
+ ROUTE_DEFAULT: "Ruta Predeterminada"
+ ROUTE_CANONICAL: "Ruta Canónica"
+ ROUTE_ALIASES: "Alias de Ruta"
+ OPEN_NEW_TAB: "Abrir en una pestaña nueva"
+ STRICT_YAML_COMPAT: "Compatibilidad de YAML"
+ STRICT_TWIG_COMPAT: "Compatibilidad de Twig"
+ SCHEDULER: "Planificador"
+ SCHEDULER_INSTALL_INSTRUCTIONS: "Instrucciones de instalación"
+ SCHEDULER_INSTALLED_READY: "Instalado y listo"
+ SCHEDULER_CRON_NA: "Cron no disponible"
+ SCHEDULER_NOT_ENABLED: "Desactivado"
+ SCHEDULER_SETUP: "Configuración del planificador"
+ SCHEDULER_INSTRUCTIONS: "El planificador de Grav te permite crear y programar tareas personalizadas. También proporciona un método para integrar plugins de Grav de forma programada y añadir dinámicamente tareas para que se ejecuten de forma periódica."
+ SCHEDULER_JOBS: "Tareas programadas personalizadas"
+ SCHEDULER_STATUS: "Estado del planificador"
+ SECURITY: "Seguridad"
+ XSS_SECURITY: "Seguridad XSS para el contenido"
+ XSS_WHITELIST_PERMISSIONS: "Permisos de lista blanca"
+ XSS_WHITELIST_PERMISSIONS_HELP: "Los usuarios con estos permisos omitirán las reglas XSS al guardar contenido"
diff --git a/user/plugins/admin/languages/et.yaml b/user/plugins/admin/languages/et.yaml
new file mode 100644
index 0000000..dc884d3
--- /dev/null
+++ b/user/plugins/admin/languages/et.yaml
@@ -0,0 +1,760 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Tegemist on beeta-versiooniga! Kasutamine töötaval veebilehel oma vastutusel..."
+ ADMIN_REPORT_ISSUE: "Leidsid mõne vea? Palun anna sellest teada GitHub-i vahendusel."
+ EMAIL_FOOTER: " Veebileht kasutab Grav'i - kaasaegset failipõhist CMS-i"
+ LOGIN_BTN: "Logi sisse"
+ LOGIN_BTN_FORGOT: "Unusta"
+ LOGIN_BTN_RESET: "Lähtesta salasõna"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Saada lähtestamise juhised"
+ LOGIN_BTN_CLEAR: "Tühjenda vorm"
+ LOGIN_BTN_CREATE_USER: "Loo kasutaja"
+ LOGIN_LOGGED_IN: "Oled edukalt sisse logitud"
+ LOGIN_FAILED: "Sisselogimine ebaõnnestus"
+ LOGGED_OUT: "Sind logiti välja"
+ RESET_NEW_PASSWORD: "Palun sisesta uus salasõna …"
+ RESET_LINK_EXPIRED: "Salasõna lähtestamine on aegunud, palun proovi uuesti"
+ RESET_PASSWORD_RESET: "Salasõna on lähtestatud"
+ RESET_INVALID_LINK: "Kehtetu lähtestamise link, palun proovi uuesti"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Salasõna lähtestamise juhised on saadeti sinu e-posti aadressile"
+ FORGOT_FAILED_TO_EMAIL: "Juhiste e-postiga saatmine ebaõnnestus, palun proovi hiljem uuesti"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Kasutaja %s salasõna ei saa lähtestada, puudub e-posti aadress"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Puudub kasutaja kasutajanimega %s"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Salasõna ei saa lähtestada. See veebileht ei ole seadistatud e-kirju saatma"
+ FORGOT_EMAIL_SUBJECT: "%s salasõna lähtestamise taotlus"
+ FORGOT_EMAIL_BODY: "
Salasõna lähtestamine
Hea %1$s,
veebilehelt %4$s tehti taotlus sinu salasõna lähtestamiseks.
یا لینک زیر را کپی و در نوار آدرس مرورگر خود قرار دهید و اجرا کنید:
%2$s
\nبا سپاس و احترام,
%3$s
"
+ MANAGE_PAGES: "مدیریت صفحات"
+ CONFIGURATION: "پیکربندی"
+ PAGES: "صفحات"
+ PLUGINS: "افزونهها"
+ PLUGIN: "افزونه"
+ THEMES: "پوسته ها"
+ LOGOUT: "خروج"
+ BACK: "بازگشت"
+ NEXT: "بعدی"
+ PREVIOUS: "قبلی"
+ ADD_PAGE: "اضافه کردن صفحه"
+ ADD_MODULAR: "اضافه کردن ماژول"
+ MOVE: "جابجایی"
+ DELETE: "حذف کردن"
+ UNSET: "تعیین نشده"
+ VIEW: "نمایش"
+ SAVE: "ذخيره"
+ NORMAL: "عادی"
+ EXPERT: "حرفه ای"
+ EXPAND_ALL: "بازکردن همه"
+ COLLAPSE_ALL: "بستن همگی"
+ ERROR: "خطا"
+ CLOSE: "بستن"
+ CANCEL: "لغو"
+ CONTINUE: "ادامه"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "نیاز به تائید دارد"
+ MODAL_CHANGED_DETECTED_TITLE: "تغییرات شناسایی شده"
+ MODAL_CHANGED_DETECTED_DESC: "شما تغییراتی دارید که ذخیره نشده اند، آیا مطمئن به ترک کردن ، بدون ذخیره کردن هستید؟?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "نیاز به تائید دارد"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "آیا مطمئن هستید می خواهید این فایل را حذف کنید؟ این عمل قابل بازگشت نیست."
+ ADD_FILTERS: "اضافه کردن فیلتر"
+ SEARCH_PAGES: "جستجو در صفحات"
+ VERSION: "نسخه"
+ WAS_MADE_WITH: "ساخته شده با"
+ BY: "توسط"
+ UPDATE_THEME: "به روز رسانی پوسته"
+ UPDATE_PLUGIN: "به روز رسانی افزونه"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "از این پوسته اکنون در دسترس است"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "از این افزونه اکنون در دسترس است"
+ AUTHOR: "نویسنده"
+ HOMEPAGE: "صفحه اصلی"
+ DEMO: "پیش نمایش"
+ BUG_TRACKER: "پیگیری اشکالات"
+ KEYWORDS: "کلیدواژه ها"
+ LICENSE: "مجوز"
+ DESCRIPTION: "توضیحات"
+ README: "من را بخوان"
+ REMOVE_THEME: "حذف پوسته"
+ INSTALL_THEME: "نصب پوسته"
+ THEME: "پوسته"
+ BACK_TO_THEMES: "بازگشت به پوسته ها"
+ BACK_TO_PLUGINS: "بازگشت به افزونه ها"
+ CHECK_FOR_UPDATES: "بررسی برای به روز رسانی"
+ ADD: "افزودن"
+ CLEAR_CACHE: "پاک کردن حافظه نهان"
+ CLEAR_CACHE_ALL_CACHE: "تمام حافظه نهان"
+ CLEAR_CACHE_ASSETS_ONLY: "تنها دارایی های"
+ CLEAR_CACHE_IMAGES_ONLY: "فقط تصاویر"
+ CLEAR_CACHE_CACHE_ONLY: "فقط حافظه نهان"
+ CLEAR_CACHE_TMP_ONLY: "تنها موقتی ها"
+ DASHBOARD: "پیشخوان"
+ UPDATES_AVAILABLE: "به رو رسانی در دسترس است"
+ DAYS: "روزها"
+ UPDATE: "به روز رسانی"
+ BACKUP: "پشتیبان"
+ BACKUPS: "نسخههای پشتیبان"
+ BACKUP_NOW: "پشتیبان گیریی"
+ BACKUPS_STATS: "آمار پشتیبان"
+ BACKUPS_HISTORY: "سابقه پشتیبان"
+ BACKUPS_PURGE_CONFIG: "پیکربندی پاکسازی نسخههای پشتیبان"
+ BACKUPS_PROFILES: "شناسههای پشتیبان"
+ BACKUPS_COUNT: "تعداد پشتیبانها"
+ BACKUPS_PROFILES_COUNT: "تعداد شناسهها"
+ BACKUPS_TOTAL_SIZE: "فضای استفاده شده"
+ BACKUPS_NEWEST: "جدیدترین نسخه پشتیبان"
+ BACKUPS_OLDEST: "قدیمیترین نسخه پشتیبان"
+ BACKUPS_PURGE: "پاکسازی"
+ BACKUPS_NOT_GENERATED: "هیچ نسخه پشتیبانی هنوز تولید نشده..."
+ BACKUPS_PURGE_NUMBER: "درحال استفاده %s از %s اسلات پشتیبان"
+ BACKUPS_PURGE_TIME: "%s روز از پشتیبانگیری گذشته است"
+ BACKUPS_PURGE_SPACE: "درحال استفاده %s از %s"
+ BACKUP_DELETED: "پشتیبان با موفقیت حذف شد"
+ BACKUP_NOT_FOUND: "نسخه پشتیبان یافت نشد"
+ BACKUP_DATE: "تاریخ نسخه پشتیبان"
+ STATISTICS: "آمارها"
+ TODAY: "امروز"
+ WEEK: "هفته"
+ MONTH: "ماه"
+ LATEST_PAGE_UPDATES: "آخرین به روز رسانی صفحه"
+ MAINTENANCE: "تعمیر و نگهداری"
+ UPDATED: "به روز رسانی شد"
+ MON: "دوشنبه"
+ TUE: "سه شنبه"
+ WED: "چهارشنبه"
+ THU: "پنج شنبه"
+ FRI: "جمعه"
+ SAT: "شنبه"
+ SUN: "یک شنبه"
+ COPY: "رونوشت"
+ EDIT: "ویرایش"
+ CREATE: "ایجاد"
+ GRAV_ADMIN: "مدیر Grav"
+ GRAV_OFFICIAL_PLUGIN: "پلاگین رسمی Grav"
+ GRAV_OFFICIAL_THEME: "تم رسمی Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "این افزونه به صورت نمادین متصل شده است. به روز رسانی ها قابل تشخیص نخواهند بود."
+ THEME_SYMBOLICALLY_LINKED: "این پوسته به صورت نمادین متصل شده است. به روز رسانی ها قابل تشخیص نخواهند بود"
+ REMOVE_PLUGIN: "حذف افزونه"
+ INSTALL_PLUGIN: "نصب افزونه"
+ AVAILABLE: "در دسترس"
+ INSTALLED: "نصب شده"
+ INSTALL: "نصب کردن"
+ ACTIVE_THEME: "پوسته ی فعال"
+ SWITCHING_TO: "تعویض به"
+ SWITCHING_TO_DESCRIPTION: "با تغییر به یک پوسته متفاوت ، هیچ ضمانتی برای پشتیبانی از تمام طرح بندی های صفحات وجود ندارد ،موقعیکه برای بارگذاری صفحات گفته شده تلاش میکنید امکان رویداد دادن خطاهایی وجود دارد."
+ SWITCHING_TO_CONFIRMATION: "آیا می خواهید ادامه دهید و پوسته را تعویض کنید ؟"
+ CREATE_NEW_USER: "ساخت کاربر جدید"
+ REMOVE_USER: "حذف کاربر"
+ ACCESS_DENIED: "امکان دسترسی وجود ندارد"
+ ACCOUNT_NOT_ADMIN: "حساب شما مجوزهای مدیر سیستم را ندارد"
+ PHP_INFO: "اطلاعات PHP"
+ INSTALLER: "نصب کننده"
+ AVAILABLE_THEMES: "پوسته های در دسترس"
+ AVAILABLE_PLUGINS: "افزونه های در دسترس"
+ INSTALLED_THEMES: "پوسته های نصب شده"
+ INSTALLED_PLUGINS: "افزونه های نصب شده"
+ BROWSE_ERROR_LOGS: "بازکردن گزارش خطاهای ثبت شده"
+ SITE: "وب سایت"
+ INFO: "اطلاعات"
+ SYSTEM: "سامانه"
+ USER: "کاربر"
+ ADD_ACCOUNT: "افزودن حساب کاربری"
+ SWITCH_LANGUAGE: "تعویض زبان"
+ SUCCESSFULLY_ENABLED_PLUGIN: "افزونه با موفقیت فعال شد"
+ SUCCESSFULLY_DISABLED_PLUGIN: "افزونه با موفقیت غیرفعال شد"
+ SUCCESSFULLY_CHANGED_THEME: "پوسته پیش فرض با موفقیت تغییر یافت"
+ INSTALLATION_FAILED: "عمل نصب ناموفق بود"
+ INSTALLATION_SUCCESSFUL: "نصب و راه اندازی موفقیت آمیز بود"
+ UNINSTALL_FAILED: "عمل حذف باموفقیت همراه نبود"
+ UNINSTALL_SUCCESSFUL: "عمل حذف با موفقیت همراه بود"
+ SUCCESSFULLY_SAVED: "با موفقیت ذخیره شد"
+ SUCCESSFULLY_COPIED: "با موفقیت نسخه برداری شد"
+ REORDERING_WAS_SUCCESSFUL: "دوباره مرتب سازی با موفقیت انجام شد"
+ SUCCESSFULLY_DELETED: "با موفقیت حذف شد"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "زبان با موفقیت تعویض شد"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "شما سطح دسترسی کافی برای انجام کارندارید"
+ CACHE_CLEARED: "حافظه نهان /کش پاک شد"
+ METHOD: "شیوه"
+ ERROR_CLEARING_CACHE: "خطا در پاکسازی حافظه نهان"
+ AN_ERROR_OCCURRED: "یک خطا روی داده است"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "نسخه پشتیبان برای دانلود آماده است"
+ DOWNLOAD_BACKUP: "دانلود نسخه پشتیبان"
+ PAGES_FILTERED: "صفحه های فیلتر شده"
+ NO_PAGE_FOUND: "هیچ صفحه ای فیلتر نشد"
+ INVALID_PARAMETERS: "پارامترهای نامعتبر"
+ NO_FILES_SENT: "پروند های ارسال نشد"
+ EXCEEDED_FILESIZE_LIMIT: "از محدوده اندازه فایل در پیکربندی PHP فراتر رفته است"
+ UNKNOWN_ERRORS: "خطاهای ناشناخته"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "از محدوده اندازه فایل در پیکربندی گراو فراتر رفته است"
+ UNSUPPORTED_FILE_TYPE: "نوع فایل پشتیبانی نشده"
+ FAILED_TO_MOVE_UPLOADED_FILE: "عدم موفقیت در انتقال فایل آپلود شده."
+ FILE_UPLOADED_SUCCESSFULLY: "فایل با موفقیت آپلود شد"
+ FILE_DELETED: "پروند حذف شد"
+ FILE_COULD_NOT_BE_DELETED: "پرونده نمی تواند حذف شود"
+ FILE_NOT_FOUND: "پرونده پیدا نشد"
+ NO_FILE_FOUND: "هیچ فایلی یافت نشد"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "به روزرسانی Grav با موفقیت انجام شد"
+ GRAV_UPDATE_FAILED: "به روز رسانی Grav ناموفق بود"
+ EVERYTHING_UPDATED: "همه چیز به روز شد"
+ UPDATES_FAILED: "بروز رسانیها موفق نبود"
+ AVATAR_BY: "آواتار توسط"
+ AVATAR_UPLOAD_OWN: "یا مال خود را بارگذاری کنید..."
+ LAST_BACKUP: "آخرین پشتیبان گیری"
+ FULL_NAME: "نام کامل"
+ USERNAME: "نام کاربری"
+ EMAIL: "ایمیل"
+ USERNAME_EMAIL: "نام کاربری یا ایمیل"
+ PASSWORD: "گذرواژه"
+ PASSWORD_CONFIRM: "تأیید گذرواژه"
+ TITLE: "عنوان"
+ LANGUAGE: "زبان"
+ ACCOUNT: "حساب کاربری"
+ EMAIL_VALIDATION_MESSAGE: "باید یک آدرس ایمیل معتبر باشد"
+ PASSWORD_VALIDATION_MESSAGE: "رمز عبور باید حداقل یک عدد و یک حرف بزرگ و یک حرف کوچک و حداقل 8 کاراکتر داشته باشد"
+ LANGUAGE_HELP: "تنظیم زبان مورد علاقه"
+ MEDIA: "رسانه"
+ DEFAULTS: "پیش فرض ها"
+ SITE_TITLE: "عنوان سایت"
+ SITE_TITLE_PLACEHOLDER: "عنوان گسترده سایت"
+ SITE_TITLE_HELP: "عنوان پیش فرض برای سایت خود، معمولا در قالبها استفاده می شود"
+ SITE_DEFAULT_LANG: "زبان پیشفرض"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "زبان پیشفرض جهت استفاده در تگ قالب"
+ SITE_DEFAULT_LANG_HELP: "زبان پیشفرض جهت استفاده در تگ قالب"
+ DEFAULT_AUTHOR: "نگارنده پیش فرض"
+ DEFAULT_AUTHOR_HELP: "نام پیشفرض نویسنده ٬ معمولاً در قالب یا محتوای برخی صفحات استفاده میشود"
+ DEFAULT_EMAIL: "ایمیل پیش فرض"
+ DEFAULT_EMAIL_HELP: "ایمیل پیشفرض جهت استفاده در قالب یا صفحات وبسایت"
+ TAXONOMY_TYPES: "انواع طبقه بندی"
+ TAXONOMY_TYPES_HELP: "در صورت تمایل به استفاده از انواع طبقه بندی در صفحات وبسایت ٬ تعیین کنید"
+ PAGE_SUMMARY: "صفحه خلاصه"
+ ENABLED: "فعال"
+ ENABLED_HELP: "فعال کردن صفحه خلاصه (صفحه خلاصه، همان محتوای صفحه را باز می گرداند)"
+ 'YES': "بله"
+ 'NO': "خیر"
+ SUMMARY_SIZE: "اندازه گزارش"
+ SUMMARY_SIZE_HELP: "میزان کاراکترهای مورد استفاده از یک صفحه برای استفاده بعنوان محتوای خلاصه"
+ FORMAT: "قالب بندی"
+ FORMAT_HELP: "کوتاه= از اولین رویداد جداکننده یا اندازه استفاده کنید.; بلند= خلاصه جداکننده درنظر گرفته نخواهد شد"
+ SHORT: "کوتاه"
+ LONG: "بلند"
+ DELIMITER: "جداکننده"
+ DELIMITER_HELP: "جداکننده خلاصه (پیشفرض '===')"
+ METADATA: "ابرداده"
+ METADATA_HELP: "به صورت پیش فرض ابر داده ها در هر صفحه نمایش داده خواهند شد مگر این در صفحه تغییریابند"
+ NAME: "نام"
+ CONTENT: "محتوا"
+ SIZE: "اندازه"
+ ACTION: "عملیات"
+ REDIRECTS_AND_ROUTES: "تغییر جهت ها & مسیرها"
+ CUSTOM_REDIRECTS: "تغییر جهت های سفارشی"
+ CUSTOM_REDIRECTS_HELP: "تغییر مسیر و تغییر جهت به صفحات دیگر. جایگذاری متن معتبر سازی درست است"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/شما/لقب"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/ شما/تغییر مسیر"
+ CUSTOM_ROUTES: "مسیرهای سفارشی"
+ CUSTOM_ROUTES_HELP: "مسیر به نام مستعار صفحات دیگر. جایگذاری متن معتبر سازی استاندارد صحیح است"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/شما/نام مستعار"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/ شما/مسیر"
+ FILE_STREAMS: "جریانهای پرونده"
+ DEFAULT: "پیشفرض"
+ PAGE_MEDIA: "صفحه رسانه"
+ OPTIONS: "موارد"
+ PUBLISHED: "منتشرشده"
+ PUBLISHED_HELP: "پیشفرض ، یک صفحه انتشار می یابد ، مگر اینکه شما صراحتا گزینه انتشار را false یا زمان انتشاردر آینده یا تاریخ عدم انتشار را در تاریخ قبل از الان ست کرده باشید"
+ DATE: "تاریخ"
+ DATE_HELP: "متغیر تاریخ به شما این اجازه را میده که مشخصا یک تاریخ را برای این صفحه تنظیم کنید."
+ PUBLISHED_DATE: "تاریخ انتشار"
+ PUBLISHED_DATE_HELP: "میتواند یک زمان خودکار برای انجام تراکنش انتشار فراهم کنید."
+ UNPUBLISHED_DATE: "تاریخ از حالت انتشار خارج شده"
+ UNPUBLISHED_DATE_HELP: "می توانید یک زمان را برای عدم انتشار خودکار تعیین کنید."
+ ROBOTS: "روبوتها"
+ TAXONOMIES: "رده بندی ها"
+ TAXONOMY: "رده بندی"
+ ADVANCED: "پیشرفته"
+ SETTINGS: "تنظيمات"
+ FOLDER_NUMERIC_PREFIX: "پیشوند عددی پوشه"
+ FOLDER_NUMERIC_PREFIX_HELP: "پیشوند عددی که مرتب سازی دستی را فراهم و مفهوم قابلیت نمایش داشتن را میرساند"
+ FOLDER_NAME: "نام پوشه"
+ FOLDER_NAME_HELP: "نام پوشه ایی که برای این صفحه در سیستم مدیریت فایل ذخیره میشود"
+ PARENT: "والد"
+ DEFAULT_OPTION_ROOT: "- ریشه -"
+ DEFAULT_OPTION_SELECT: "- انتخاب -"
+ DISPLAY_TEMPLATE: "نمایش قالب"
+ DISPLAY_TEMPLATE_HELP: "نوع صفحه که دلالت دارد بر اینکه کدام قالب Twig صفحه را رندر میکند"
+ BODY_CLASSES: "بدنه ی کلاسها"
+ ORDERING: "مرتب سازی"
+ PAGE_ORDER: "ترتیب صفحه"
+ OVERRIDES: "ملغی کردن"
+ MENU: "فهرست"
+ MENU_HELP: "متن مورد استفاده در فهرست. اگر تعیین نشود از عنوان استفاده خواهد شد."
+ SLUG: "نام یکتا"
+ SLUG_HELP: "به کمک متغییر نام یکتا می توانید بخشی از URL که مربوط به صفحه می باشد را تعیین کنید"
+ SLUG_VALIDATE_MESSAGE: "در نام یکتا فقط می توانید از کاراکتر های عدد ، حروف کوچک و خط تیره استفاده کنید"
+ PROCESS: "روند"
+ PROCESS_HELP: "تعیین کنید صفحات چگونه پردازش شوند. می توانید علاوه به تنظیم کلی، این تنظیمات را برای هر صفحه بصورت جداگانه نیز انجام دهید"
+ DEFAULT_CHILD_TYPE: "نوع پیشفرض فرزند (Child)"
+ USE_GLOBAL: "استفاده جهانی"
+ ROUTABLE: "قابل مسیردهی"
+ ROUTABLE_HELP: "اگر این صفحه توسط یک URL قابل دسترسی باشد"
+ CACHING: "کش کردن"
+ VISIBLE: "قابل مشاهده"
+ VISIBLE_HELP: "تعیین می کند که یک صفحه در فهرست نمایش داده شود یا خیر."
+ DISABLED: "غیرفعال"
+ ITEMS: "موارد"
+ ORDER_BY: "مرتب کردن با"
+ ORDER: "ترتیب"
+ FOLDER: "پوشه"
+ ASCENDING: "صعودی"
+ DESCENDING: "نزولی"
+ ADD_MODULAR_CONTENT: "اضافه کردن محتوای مدولار"
+ PAGE_TITLE: "عنوان صفحه"
+ PAGE_TITLE_HELP: "عنوان صفحه"
+ PAGE: "صفحه"
+ MODULAR_TEMPLATE: "قالب مدولار"
+ FRONTMATTER: "سربرگ"
+ FILENAME: "نام پرونده"
+ PARENT_PAGE: "صفحه مرجع"
+ HOME_PAGE: "صفحه اصلی"
+ HOME_PAGE_HELP: "صفحه ای که گراو از آن بعنوان صفحه خانگی استفاده می کند"
+ DEFAULT_THEME: "پوسته پیش فرض"
+ DEFAULT_THEME_HELP: "پوسته پیشفرض گراو را تعیین کنید (Antimatter پوسته پیشفرض است)"
+ TIMEZONE: "منظقه زمانی"
+ TIMEZONE_HELP: "نادیده گرفتن منطقه زمانی پیش فرض سرور"
+ SHORT_DATE_FORMAT: "فرمت کوتاه نمایش تاریخ"
+ SHORT_DATE_FORMAT_HELP: "تنظیم فرمت کوتاه نمایش تاریخ که میتواند برای پوسته ها مورد استفاده قرار گیرد"
+ LONG_DATE_FORMAT: "فرمت طولانی نمایش تاریخ"
+ LONG_DATE_FORMAT_HELP: "تنظیم فرمت طولانی نمایش تاریخ که میتواند برای پوسته ها مورد استفاده قرار گیرد"
+ DEFAULT_ORDERING: "ترتیب بندی پیشفرض"
+ DEFAULT_ORDERING_HELP: "با استفاده از این امکان صفحات در یک لیست ارائه خواهد شد در غیر این صورت لغو میشود"
+ DEFAULT_ORDERING_DEFAULT: "پیش فرض - بر اساس نام پوشه"
+ DEFAULT_ORDERING_FOLDER: "پوشه - بر اساس نام پوشه با پیشوند کمتر"
+ DEFAULT_ORDERING_TITLE: "عنوان - براساس عنوان زمینه در سرصفحه"
+ DEFAULT_ORDERING_DATE: "تاریخ - بر اساس تاریخ زمینه در سر صفحه"
+ DEFAULT_ORDER_DIRECTION: "جهت سفارش پیش فرض"
+ DEFAULT_ORDER_DIRECTION_HELP: "جهت صفحات در لیست"
+ DEFAULT_PAGE_COUNT: "تعداد دفعات مشاهده صفحه پیش فرض"
+ DEFAULT_PAGE_COUNT_HELP: "مقدار پیشفرض بیشترین تعداد صفحات دریک لیست"
+ DATE_BASED_PUBLISHING: "انتشار برا اساس تاریخ"
+ DATE_BASED_PUBLISHING_HELP: "به طور خودکار انتشاریا عدم انشتار پست ها به تاریخ آنها وابسته باشد"
+ EVENTS: "رویدادها"
+ EVENTS_HELP: "فعال یا غیر فعال کردن رویدادهای مشخص. غیرفعال کردن اینها میتواند افزونه ها را جدا کند"
+ REDIRECT_DEFAULT_ROUTE: "مسیر پیشفرض برای تعیر جهت"
+ REDIRECT_DEFAULT_ROUTE_HELP: "به طور خودکار به مسیر پیش فرض صفحه تغییر جهت دهد"
+ LANGUAGES: "زبانها"
+ SUPPORTED: "پشتیبانی شده"
+ SUPPORTED_HELP: "حرف کاما برای جدا سازی کد زبانهای که دو حرفی هستند استفاده میشود. مانند (en,fr,de)"
+ TRANSLATIONS_ENABLED: "ترجمه کردن فعال شد"
+ TRANSLATIONS_ENABLED_HELP: "پشتیبانی ترجمه در Grav و افزونه ها و الحاقات"
+ TRANSLATIONS_FALLBACK: "ترجمه مجدد"
+ TRANSLATIONS_FALLBACK_HELP: "ترجمه مجدد از طریق زبانهای پشتیبانی شده اگر زبان فعال وجود نداشت"
+ ACTIVE_LANGUAGE_IN_SESSION: "فعال کردن زبان در Session"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "ذخیره کردن زبان فعال در جلسه"
+ HTTP_HEADERS: "هدر های HTTP"
+ EXPIRES: "منقضی شد"
+ EXPIRES_HELP: "تنظیم کردن تاریخ انقضا. مقدار به ثانیه است."
+ CACHE_CONTROL: "کنترل حافظه موقت HTTP"
+ CACHE_CONTROL_HELP: "تنظیم مقدار معتبر برای کنترل کش مانند `no-cache, no-store, must-revalidate`"
+ LAST_MODIFIED: "آخرین ویرایش"
+ LAST_MODIFIED_HELP: "اخرین هدر ویرایش شده ، که میتواند کش کردن در مرورگر و استفاده از پراکسی را بهینه کند را تنظیم کنید"
+ ETAG: "ETag"
+ ETAG_HELP: "Etag هدر را برای کمک به تعیین هویت کردن ، زمانی که یک صفحه ویرایش میشود تنظیم کنید"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "تنظیم کردن هدر Vary: accept encoding به کش کردن CDN و پراکسی کمک میکند"
+ MARKDOWN: "MarkDown"
+ MARKDOWN_EXTRA_HELP: "فعال کردن پشتیبانی پیشفرض برای MarkDown\n- https://michelf.ca/projects/php-markdown/extra"
+ AUTO_LINE_BREAKS: "به طور خودکار خط میشکند"
+ AUTO_LINE_BREAKS_HELP: "فعال سازی پشتیبانی زا شکستن خط خودکار در MarkDown"
+ AUTO_URL_LINKS: "ارتباط دادن خودکار آدرسهای URL"
+ AUTO_URL_LINKS_HELP: "فعال کردن تبدیل خودکار URL ها به لینک های HTML"
+ ESCAPE_MARKUP: "رها سازی نشانه گذاری"
+ ESCAPE_MARKUP_HELP: "رهاسازی نشانه گذاری تگها درون عناصر HTML"
+ CACHING_HELP: "انتخاب Y/N به صورت سراسری برای فعال/غیرفعال کردن عمل کشینگ در Grav"
+ CACHE_CHECK_METHOD: "روش بررسی کش"
+ CACHE_CHECK_METHOD_HELP: "انتخاب روشی که با آن Grav چک میکند که آیا فایل های صفحات اصلاح شده اند."
+ CACHE_DRIVER: "راه انداز کش"
+ CACHE_DRIVER_HELP: "انتخاب اینکه Grav از کدام کش درایور بهتر است استفاده کند. 'َAuto Detect' این گزینه بهترین گزینه را برای شما پیدا میکند"
+ CACHE_PREFIX: "پیشوند کش"
+ CACHE_PREFIX_HELP: "یک شناسه برای بخش Grav key. مادامی که نمیدانید چه کار میخواهید انجام دهید تغییر ندهید."
+ CACHE_PREFIX_PLACEHOLDER: "برگرفته شده از URL پایه (جایگزین شده با وارد کردن رشته متنی تصادفی)"
+ CACHE_PURGE_JOB: "کار پاکسازی برنامهریزی شده را اجرا کنید"
+ CACHE_PURGE: "پاکسازی حافظهپنهان قدیمی"
+ LIFETIME: "عمر مفید"
+ LIFETIME_HELP: "زمان عمر مفید کش را به ثانیه تعیین میکند. مقدار 0 برابر با بی نهایت است"
+ GZIP_COMPRESSION: "فشرده سازی به صورت Gzip"
+ GZIP_COMPRESSION_HELP: "فعال کردن فشرده سازی Gzip برای صفحه Grav به منظور افزایش کارایی."
+ TWIG_TEMPLATING: "قالب سازی Twig"
+ TWIG_CACHING: "کش کردن Twig"
+ TWIG_CACHING_HELP: "کنترل مکانیزم Twig کشینگ. برای بهترین کارایی این را فعال کنید."
+ TWIG_DEBUG: "اشکال زدایی Twig"
+ TWIG_DEBUG_HELP: "اجازه گزینه ی بارگذاری نکردن ، اکستنشن اشکال زدایی Twig را میدهد"
+ DETECT_CHANGES: "تشخیص تغییرات"
+ DETECT_CHANGES_HELP: "به صورت خودکار Twig کش خود را در صورتی کخ هرگونه تغییر در پوسته اش شناسایی کند باز گردآوری میکند"
+ AUTOESCAPE_VARIABLES: "متغیرهای Autoescape"
+ AUTOESCAPE_VARIABLES_HELP: "تمام متغییر ها Autoescapes شوند. این کار به احتمال زیاد سایت شما را خراب خواهد کرد"
+ ASSETS: "اموال"
+ CSS_PIPELINE: "CSS pipeline"
+ CSS_PIPELINE_HELP: "CSS pipeline یکی سازو متحد کردن چند منبع به یک فایل CSS است"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "مشمولات در CSS pipeline"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "آدرس خارجی گاهی فایل مرتبط به مراجع دارد و نباید pipeline شود"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "اولین CSS pipeline ارائه شده"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "ارائه CSS pipeline قبل از هر منبع CSS دیگر که شامل نمیشود "
+ CSS_MINIFY: "فشرده سازی CSS"
+ CSS_MINIFY_HELP: "کوچک کردن CSS در pipelining"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "فشرده سازی اجباری CSS برای ویندوز"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "فشرده سازی اجباری برای پلاتفرم های ویندوزی. با توجه به ThreadStackSize بصورت پیشفرض غیر فعال است"
+ CSS_REWRITE: "بازنویس CSS"
+ CSS_REWRITE_HELP: "بازنویسی هر آدرس مرتبط CSS در حین pipelining"
+ JAVASCRIPT_PIPELINE: "pipelining جاوا اسکریپت"
+ JAVASCRIPT_PIPELINE_HELP: "JS pipeline یکی ساز و متحد کننده چند منبع به یک فایل JS است"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "مشمولات در JS pipeline"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "آدرس خارجی گاهی فایل مرتبط به مراجع دارد و نباید pipeline شود"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "در ابتدا ارائه JS pipeline"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "ارائه JS pipeline قبل از هر منبع JS دیگر که آن را شامل نمیشود "
+ JAVASCRIPT_MINIFY: "فشرده سازی جاوا اسکریپت"
+ JAVASCRIPT_MINIFY_HELP: "کوچک کردن JS در حین pipelining"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "فعال کردن برچسب زمانی در دارایی"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "فعالسازی برچسب زمانی دارایی"
+ COLLECTIONS: "مجموعه"
+ ERROR_HANDLER: "کنترلگر خطا"
+ DISPLAY_ERRORS: "نمایش خطاها"
+ DISPLAY_ERRORS_HELP: "نمایش استایل صفحه ردیابی کامل خطا"
+ LOG_ERRORS: "گزارش خطاها"
+ LOG_ERRORS_HELP: "گزارش خطاها در پوشه گزارشها"
+ LOG_HANDLER: "سیستم کنترل کننده رخدادها"
+ LOG_HANDLER_HELP: "محل خروجی رخدادهها"
+ SYSLOG_FACILITY: "امکانات syslog"
+ SYSLOG_FACILITY_HELP: "امکانات Syslog برای خروجی"
+ DEBUGGER: "اشکال زدا"
+ DEBUGGER_HELP: "فعال کردن اشکال زدای Grav و تنظیمات زیر"
+ DEBUG_TWIG: "اشکال زدایی Twig"
+ DEBUG_TWIG_HELP: "فعال کردن اشکال زدایی از پوسته های Twig"
+ SHUTDOWN_CLOSE_CONNECTION: "خاموش کردن ارتباط نزدیک"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "قبل از فراخوانی onShutdown() اتصال را ببندید. غیرفعال برای حالت خطا زادیی"
+ DEFAULT_IMAGE_QUALITY: "کیفیت پیش فرض تصویر"
+ DEFAULT_IMAGE_QUALITY_HELP: "کیفیت تصویر پیش فرض برای استفاده در هنگام باز نمونه گيری یا ذخیره تصاویر (85%)"
+ CACHE_ALL: "ذخیره تمام تصاویر در حافظه کش"
+ CACHE_ALL_HELP: "اجرای تمام تصاویر توسط سیستم کش Grav حتی اگر هیچ رسانه ای دستکاری نشده باشد"
+ IMAGES_DEBUG: "علامت اشکال زدایی تصویر"
+ IMAGES_DEBUG_HELP: "نمایش یک پوشش بر روی تصاویر هنگام کار با رتینا، که عمق پیکسل تصاویر را نشان دهد برای مثال"
+ UPLOAD_LIMIT: "محدودیت آپلود فایل"
+ UPLOAD_LIMIT_HELP: "تنظیم حداکثر مقدار آپلود به بایت (0 نامحدود است)"
+ ENABLE_MEDIA_TIMESTAMP: "فعالسازی برچسب زمانی روی رسانه"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "افزودن برچسب زمانی بر اساس آخرین تاریخ اصلاح برای هر یک از آیتم های رسانه"
+ SESSION: "جلسه"
+ SESSION_ENABLED_HELP: "فعال کردن پشتیبانی از جلسه در GRAV"
+ TIMEOUT: "اتمام مهلت"
+ TIMEOUT_HELP: "تنظیم مهلت جلسه به ثانیه"
+ SESSION_NAME_HELP: "یک شناسه به نام کوکی جلسه استفاده میشود"
+ SESSION_UNIQUENESS: "رشتههای منحصر به فرد"
+ ABSOLUTE_URLS: "URL های مطلق"
+ ABSOLUTE_URLS_HELP: "Url مطلق یا نسبی برای 'base_url'"
+ PARAMETER_SEPARATOR: "پارامتر جدا کننده"
+ PARAMETER_SEPARATOR_HELP: "جدا کننده برای پارامتر های تایید شده، که می توان آن را برای آپاچی بر روی ویندوز تغییر داد"
+ TASK_COMPLETED: "کار تمام شد"
+ EVERYTHING_UP_TO_DATE: "همه چیز بهروز است"
+ UPDATES_ARE_AVAILABLE: "به روز رسانی ها در دسترس هستند"
+ IS_AVAILABLE_FOR_UPDATE: "برای به روز رسانی در دسترس است"
+ IS_NOW_AVAILABLE: "در حال حاضر در دسترس است"
+ CURRENT: "فعلی"
+ UPDATE_GRAV_NOW: "همین حالا Grav را بروزرسانی کنید"
+ GRAV_SYMBOLICALLY_LINKED: "Grav به طور نمادین متصل شده است. ارتقا در دسترس نخواهد بود"
+ UPDATING_PLEASE_WAIT: "بروزرسانی.... لطفا شکیبا باشید. در حال دانلود کردن"
+ OF_THIS: "از این"
+ OF_YOUR: "از شما"
+ HAVE_AN_UPDATE_AVAILABLE: "یک بروز رسانی دردسترس دارد"
+ SAVE_AS: "ذخیره بعنوان"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "ایا اطمینان دارید که میخواهید این صفحه به همراه تمام زیر صفحاتش را حذف کنید؟ اگر صفحه در زبانهای دیگر ترجمه شده باشد ،ترجمه های آن ها حفظ نخواهند شد و باید به صورت جداگانه حذف شوند. درغیر اینصورت پوشه صفحه به همراه همه زیر صفحه های آن را نیز حذف خواهد شد. این عملیات نمیتواند ناتمام بماند."
+ AND: "و"
+ UPDATE_AVAILABLE: "بروزرسانی در دستر است"
+ METADATA_KEY: "کلید( کلمه کلیدی)"
+ METADATA_VALUE: "مقدار (مثله 'وبلاگ', 'Grav')"
+ USERNAME_HELP: "نام کاربری باید بین 3 و 16 حرف باشد، که میتواند شامل حروف کوچک ، اعداد ، خط زیر، خط تیره باشد\nاستفاده از حروف بزرگ ،فاصله ، و حروف خاص مجاز نمی باشد"
+ FULLY_UPDATED: "به طور کامل به روز رسانی شد"
+ SAVE_LOCATION: "ذخیره مکان"
+ PAGE_FILE: "قالب صفحه"
+ PAGE_FILE_HELP: "نام فایل صفحه پوسته ،و نمایش پوسته پیش فرض برای این صفحه"
+ NO_USER_ACCOUNTS: "حساب های کاربری پیدا نشد ، لطفا ابتدا یکی بسازید..."
+ REDIRECT_TRAILING_SLASH: "اسلش «\\» تغییر مسیر"
+ REDIRECT_TRAILING_SLASH_HELP: "بجای استفاده از اسلش «/» در آدرس از تغییر مسیر ۳۰۱ استفاده شود."
+ DEFAULT_DATE_FORMAT: "فرمت تاریخ صفحه"
+ DEFAULT_DATE_FORMAT_HELP: "نوع نمایش تاریخ صفحه توسط Grav. به صورت پیش فرض Grav قصد دارد نوع نمایش تاریخ را پیشنهاد کند ، هرچند شما میتوانید یک نوع نمایش تاریخ با استفاده از سینتکس تاریخ PHP مشخص کنید (مانند: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "حدس خودکار"
+ IGNORE_FILES: "نادیده گرفتن فایل ها"
+ IGNORE_FILES_HELP: "فایل های خاصی که هنگام پردازش صفحات باید از آنها چشم پوشی کرد"
+ IGNORE_FOLDERS: "نایده گرفتن پوشه"
+ IGNORE_FOLDERS_HELP: "پوشه های خاصی که هنگام پردازش صفحات باید از آنها چشم پوشی کرد"
+ HIDE_EMPTY_FOLDERS: "پنهان کردن پوشههای خالی"
+ HTTP_ACCEPT_LANGUAGE: "تنظیم زبان از مرورگر"
+ HTTP_ACCEPT_LANGUAGE_HELP: "شما می توانید تنظیم زبان را مبتنی بر 'http_accept_language' برچسب سربرگ در مرورگر انتخاب کنید"
+ OVERRIDE_LOCALE: "نادیده گرفتن محلی"
+ OVERRIDE_LOCALE_HELP: "نادیده گرفتن تنظیمات محلی در PHP بر اساس زبان فعلی"
+ REDIRECT: "تغییر مسیر صفحه"
+ REDIRECT_HELP: "یک مسیر صفحه و یا یک آدرس خارجی برای تغییر مسیر این صفحه انتخاب کنید.به عنوان مثال `/some/route`و یا 'http://somesite.com'"
+ PLUGIN_STATUS: "وضعیت افزونه"
+ INCLUDE_DEFAULT_LANG: "شامل زبان پیش فرض"
+ INCLUDE_DEFAULT_LANG_HELP: "این گزینه نام زبان پیشفرض را به ابتدای تمام آدرس های صفحات آن زبان اصافه می کند. مثال: `/en/blog/my-post`"
+ ALLOW_URL_TAXONOMY_FILTERS: "فیلترهای طبقه بندی URL"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "مجموعه ها بر اساس صفحه به شما اجازه فیلتر میدهد `/طیقه بندی : ارزش`."
+ REDIRECT_DEFAULT_CODE: "کد تغییر مسیر پیش فرض"
+ REDIRECT_DEFAULT_CODE_HELP: "از کد وضعیت HTTP برای تغییر مسیر استفاده کنید"
+ IGNORE_HIDDEN: "نادیده گرفتن پنهان"
+ IGNORE_HIDDEN_HELP: "نپذیرفتن تمام فایل ها و پوشه ها که با نقطه شروع می شوند"
+ WRAPPED_SITE: "سایت پیچیده"
+ WRAPPED_SITE_HELP: "برای پوسته/پلاگین هایی که Grav که توسط سیستم عامل دیگری پیچیده می شود"
+ FALLBACK_TYPES: "انواع پلان های جایگزین محاز"
+ FALLBACK_TYPES_HELP: "انواع فایل های مجاز که از طریق صفحه مسیر قابل دسترسی است. به صورت پیش فذض برای هر نوع رسانه ای پشتیبانی میشود "
+ INLINE_TYPES: "انواع پلان های جایگزین درون خطی"
+ INLINE_TYPES_HELP: "لیست انواع فایل هایی که باید به جای دانلود درون خطی نمایش داده شود"
+ APPEND_URL_EXT: "اضافه پسوند URL"
+ APPEND_URL_EXT_HELP: "فرمت های سفارشی را به آدرس این صفحه اضافه کنید. توجه داشته باشید این به این معنیست که Grav در جستجوی ' خواهد بود . . اtwig` template"
+ PAGE_MODES: "حالت صفحه"
+ PAGE_TYPES: "نوع صفحه"
+ ACCESS_LEVELS: "سطوح دسترسی"
+ GROUPS: "گروه ها"
+ GROUPS_HELP: "فهرست گروه هایی که کاربر در آن عضو است"
+ ADMIN_ACCESS: "دسترسی مدیریت"
+ SITE_ACCESS: "دسترسی سایت"
+ INVALID_SECURITY_TOKEN: "نشانه امنیت نامعتبر"
+ ACTIVATE: "فعالسازی"
+ TWIG_UMASK_FIX: "تنظیم umask "
+ TWIG_UMASK_FIX_HELP: "به صورت پیش فرض Twig کش فایل ها را روی 0755 ایجاد میکند . روی 0775 تنظیم نمایید"
+ CACHE_PERMS: "مجوزهای کش"
+ CACHE_PERMS_HELP: "دسترسی های پیشفرض پوشه کش. معمولاً ۰۷۵۵ یا ۰۷۷۵ می باشد"
+ REMOVE_SUCCESSFUL: "حذف با موفقیت انجام شد"
+ REMOVE_FAILED: "حذف انجام نشد"
+ HIDE_HOME_IN_URLS: " مخفی کردن مسیر خانه در URL ها"
+ HIDE_HOME_IN_URLS_HELP: "اطمینان حاصل خواهد شد که مسیر پیشفرض صفحات زیرین صفحه خانه به مسیر عمومی آن ارجاع داده نشود"
+ TWIG_FIRST: "ابتدا فرآیند Twig "
+ TWIG_FIRST_HELP: "اگر پردازش صفحات توسط Twig را فعال کرده اید، اکنون می توانید تعیین کنید این پروسه قبل یا بعد از پردازش markdown انجام شود"
+ SESSION_SECURE: "امن"
+ SESSION_SECURE_HELP: "اگر درست باشد ، نشان میدهد که ارتباط این کوکی ها پیش از انتقال باید رمزگذاری شده باشند . اخطار : این گزینه را تنها در سایت هایی که منحصرا در HTTPS اجرا میشوند فعال کنید."
+ SESSION_HTTPONLY: "فقط HTTP"
+ SESSION_HTTPONLY_HELP: "اگر درست باشد،نشان میدهد که کوکی ها باید بیشتر از HTTP استفاده شود و اصلاح جاوا اسکریپت مجاز نمیباشد."
+ REVERSE_PROXY: "پروکسی معکوس"
+ REVERSE_PROXY_HELP: "در صورتی که شما در پشت یک پروکسی معکوس هستید و با آدرس های حاوی پورت های غلط مشکل دارید این گزینه را فعال کنید"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "سربرگ نامعتبر ، ذخیره نشد"
+ ADD_FOLDER: "افزودن پوشه"
+ PROXY_URL: "URL پروکسی"
+ PROXY_URL_HELP: "پروکسی هاست یا آی پی و پورت را وارد نمایید"
+ NOTHING_TO_SAVE: "هیچ چیزس برای ذخیره وجود ندارد"
+ FILE_ERROR_ADD: "هنگام تلاش برای اضافه کردن فایل خطایی رخ داده است"
+ FILE_ERROR_UPLOAD: "خطایی در حین تلاش برای آپلود فایل به وجود آمده است"
+ FILE_UNSUPPORTED: "نوع فایل پشتیبانی نشده"
+ ADD_ITEM: "افزودن مورد"
+ FILE_TOO_LARGE: "پرونده بیش از حد برای آپلود بزرگ می باشد، با توجه به تنظیمات پی اچ پی حداکثر مقدار مجاز %s است. افزایش مقدار توسط تنظیمات پی اچ پی 'post_max_size'"
+ INSTALLING: "درحال نصب"
+ LOADING: "درحال بارگذاری.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "وابستگی های زیر در ابتدا لازم است تکمیل شوند :"
+ ERROR_INSTALLING_PACKAGES: "خطا در حین نصب بسته"
+ INSTALLING_DEPENDENCIES: "در حال نصب متعلقات..."
+ INSTALLING_PACKAGES: "در حال نصب بسته.."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "بسته با موفقیت نصب شد."
+ READY_TO_INSTALL_PACKAGES: "آماده برای نصب بسته"
+ PACKAGES_NOT_INSTALLED: "بسته نصب نشد"
+ PACKAGES_NEED_UPDATE: "بسته در حال حاضر نصب شده اما نسخه خیلی قدیمی است"
+ PACKAGES_SUGGESTED_UPDATE: "بسته از قبل نصب شده و نسخه خوبی است ، اما برای بروز بودن شما آپدیت خواهد شد"
+ REMOVE_THE: "حذف %s"
+ CONFIRM_REMOVAL: "آیا شما مطمئن هستید که میخواهید این ٪ s را حذف کنید؟"
+ REMOVED_SUCCESSFULLY: "%s با موفقیت حذف شد"
+ ERROR_REMOVING_THE: "خطا در حذف %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s نیازمند وابستگی های زیر است برای نصب بسته دیگر لازم نیست. اگر شما از آنها استفاده نمی کنید، می توانید آنها را به طور مستقیم از اینجا حذف کنید."
+ READY_TO_UPDATE_PACKAGES: "آماده برای به روز رسانی بستهpackage(s)"
+ ERROR_UPDATING_PACKAGES: "خطا در حین به روز رسانی بسته"
+ UPDATING_PACKAGES: "در حال بروزرسانی بسته.."
+ PACKAGES_SUCCESSFULLY_UPDATED: "بسته با موفقیت به روز رسانی شد."
+ UPDATING: "به روز رسانی"
+ GPM_RELEASES: "انتشار GPM"
+ GPM_RELEASES_HELP: "برای نصب بتا یا نسخه های تست \"تست کردن\" را انتخاب کنید"
+ GPM_METHOD: "روش واکشیدن از راه دور"
+ GPM_METHOD_HELP: "هنگام تنظیم روی حالت خودکار، Grav تعیین خواهد کرد اگر fopen موجود است از آن استفاده میکند ، در غیر این صورتcURL را مورد استفاده قرار میدهد. و مجبور به استفاده از تنظیمات دیگری میشود."
+ GPM_VERIFY_PEER: "بررسی همکار از راه دور (SSL)"
+ GPM_VERIFY_PEER_HELP: "به نظر میرسد برخی از ارائه دهندگان برای تایید گواهینامه getgrav.org SSL به دلیل کار نکردن GPM با شکست مواجه شده اند . اگر این اتفاق برای شما رخ داده است ، غیر فعال کردن این تنظیم ممکن است به شما کمک کند"
+ AUTO: "خودكار"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "پایدار"
+ TESTING: "تست کردن"
+ FRONTMATTER_PROCESS_TWIG: "پردازش سربرگ Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "هنگامی که فعال باشد شما می توانید از متغیر های پیکربندی Twig در جلو صفحه استفاده نمایید"
+ FRONTMATTER_IGNORE_FIELDS: "نادیده گرفتن زمینه های مقدمه"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "زمینه دقیق سربرگ ممکن است حاوی Twig باشد اما قابل پردازش نیست. مانند ' فرم '"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "بسته %s با موفقیت نصب شد"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "چیدمان تنظیمات والد ، ترتیب بندی غیر فعال است"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "صفحه قابل رویت نیست ، سفارش غیر فعال میباشد"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "مرتب سازی از طریق مدیر پشتیبانی نمیشود زیرا بیش از 200 هم نوع وجود دارد"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "ترتیب بندی صفحه برای این صفحه غیرفعال شده است زیرا اعداد پیشوند پوشهفعال نشده است"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "توجه: شما نمیتوانید فایل حاوی رسانه ای را اضافه کنید تا زمانی که صفحه را ذخیره کنید .فقط در بالا روی \"ذخیره\"کلیک کنید"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "توجه : قبل از اینکه شما بتوانیدفایل ها را آپلود نمایید صفحه باید ذخیره شود"
+ DROP_FILES_HERE_TO_UPLOAD: "فایل های خو را اینجا رها کنید یا اینجا کلیک کنید"
+ INSERT: "وارد کردن"
+ UNDO: "انصراف و لغو"
+ REDO: "انجام دوباره"
+ HEADERS: "عناوین"
+ BOLD: "ضخیم"
+ ITALIC: "کج"
+ STRIKETHROUGH: "خط خورده"
+ SUMMARY_DELIMITER: "خلاصه جداساز"
+ LINK: "لینک"
+ IMAGE: "تصویر"
+ BLOCKQUOTE: "نقل قول"
+ UNORDERED_LIST: "لیست نا مرتب"
+ ORDERED_LIST: "لیست سفارش"
+ EDITOR: "ویرایشگر"
+ PREVIEW: "پیشنمایش"
+ FULLSCREEN: "تمام صفحه"
+ MODULAR: "ماژولار"
+ NON_ROUTABLE: "غیر قابل مسیر یابی"
+ NON_MODULAR: "بدون ماژولار"
+ NON_VISIBLE: "غیر قابل مشاهده"
+ NON_PUBLISHED: "منتشر نشده"
+ CHARACTERS: "كاركترها"
+ PUBLISHING: "انتشار"
+ NOTIFICATIONS: "اطلاعیهها"
+ MEDIA_TYPES: "نوع رسانه"
+ IMAGE_OPTIONS: "گزینه های تصویر"
+ MIME_TYPE: "نوع فایل"
+ THUMB: "نما"
+ TYPE: "نوع"
+ FILE_EXTENSION: "پسوند فایل"
+ LEGEND: "شرح صفحه"
+ MEMCACHE_SERVER: "سرور حافظه موقت"
+ MEMCACHE_SERVER_HELP: "آدرس سرور حافظه موقت"
+ MEMCACHE_PORT: "درگاه حافظه موقت"
+ MEMCACHE_PORT_HELP: "درگاه سرور حافظه موقت"
+ MEMCACHED_SERVER: "سرور حافظه موقت"
+ MEMCACHED_SERVER_HELP: "آدرس سرور حافظه موقت"
+ MEMCACHED_PORT: "درگاه حافظه موقت"
+ MEMCACHED_PORT_HELP: "درگاه سرور حافظه موقت"
+ REDIS_SERVER: "سرور Redis"
+ REDIS_SERVER_HELP: "آدرس سرور Redis"
+ REDIS_PORT: "درگاه Redis"
+ REDIS_PORT_HELP: "درگاه سرور Redis"
+ REDIS_PASSWORD: "ردیست رمز عبور/ راز"
+ ALL: "همه"
+ FROM: "از"
+ TO: "به"
+ RELEASE_DATE: "تاریخ انتشار"
+ SORT_BY: "مرتب سازی بر اساس"
+ RESOURCE_FILTER: "فیلتر..."
+ FORCE_SSL: "استفاده از نیروی SSL"
+ FORCE_SSL_HELP: "نیروی جهانی SSL, اگر فعال شود زمانی که سایت از طریق HTTP وصل میشود ، Grav یک تغییر مسیر به صفحه HTTPS میفرستد"
+ NEWS_FEED: "خوراک خبرها"
+ EXTERNAL_URL: "آدرس خارجی"
+ SESSION_PATH: "مسیر جلسه"
+ SESSION_PATH_HELP: "اگر می خواهید یک URL سفارشی پایه قرار دهید از این گزینه استفاده نمایید . (دامنه سایت / پوشه فرعی)"
+ CUSTOM_BASE_URL: "URL سفارشی پایه"
+ CUSTOM_BASE_URL_HELP: "اگر می خواهید دامنه سایت را مجددا بنویسید یا از پوشه فرعی متفاوتی نسبت به آنچه توسط Grav استفاده شده ،از این گزینه استفاده کنید . مثال: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: '"%s" را نمیتوان خارج از صفحات استفاده کرد'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'ناتوان در بارگذاری فایل %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'ناتوان در انتقال پرونده %s به "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'لغو آپلود'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'آیا مطمئن هستید که می خواهید ارسال این فایل را لغو کنید؟'
+ DROPZONE_DEFAULT_MESSAGE: 'فایل های خو را اینجا رها کنید یا اینجا کلیک کنید'
+ DROPZONE_FALLBACK_MESSAGE: 'مرورگر شما کشیدن و رها کردن فایل را پشتیبانی نمیکند'
+ DROPZONE_FALLBACK_TEXT: 'لطفا از فرم ذخیره زیر برای آپلود فایل های خود مانند روزهای دیگر استفاده نمایید.'
+ DROPZONE_FILE_TOO_BIG: 'فایل خیلی بزرگ ({{filesize}}MiB) است. حداکثر اندازه فایل: {{maxFilesize}}MiB میباشد.'
+ DROPZONE_INVALID_FILE_TYPE: "شما قادر به ارسال فایل های از این نوع نیستید."
+ DROPZONE_MAX_FILES_EXCEEDED: "شما نمیتوانید فایل بیشتری آپلود کنید."
+ DROPZONE_REMOVE_FILE: "حذف فایل"
+ DROPZONE_RESPONSE_ERROR: "پاسخ سرور با کد {{statusCode}}."
+ PREMIUM_PRODUCT: "نسخه ویژه"
+ ADMIN_CACHING: "فعالسازی کش مدیریت"
+ ADMIN_CACHING_HELP: "کش مدیریت میتواند به صورت مستقل از سایت جلویی کنترل شوذ"
+ DESTINATION_NOT_SPECIFIED: "مقصد مشخص نشده است"
+ UPLOAD_ERR_NO_TMP_DIR: "یک پوشه موقت گم شده است"
+ SESSION_SPLIT: "جلسه تقسیم"
+ SESSION_SPLIT_HELP: "تقسیم جلسات مستقل بین سایت و پلاگین های دیگر ( مانند مدیریت )"
+ ERROR_FULL_BACKTRACE: "ردیابی کامل خطا"
+ ERROR_SIMPLE: "خطای ساده"
+ ERROR_SYSTEM: "خطای سیستم"
+ IMAGES_AUTO_FIX_ORIENTATION: "تنظیم تعمیر خودکار"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "تنظیم خودکار جهت تصویر بر اساس داده های Exif"
+ REDIS_SOCKET: "سوکت redis"
+ REDIS_SOCKET_HELP: "سوکت Redis"
+ NOT_SET: "تنظیم نشده"
+ PERMISSIONS: "دسترسیها"
+ NEVER_CACHE_TWIG: " Twig هیچ گاه ذخیره نشود"
+ NEVER_CACHE_TWIG_HELP: "فقط محتویات کش و پردازش Twig برای هر صفحه در هر لحظه ذخیره میشود .تنظیمات Twig_first را نادیده می گیرد."
+ ALLOW_WEBSERVER_GZIP: "اجازه دادن به وب سرور Gzip"
+ ALLOW_WEBSERVER_GZIP_HELP: "به صورت پیش فرض غیرفعال است. در صورت فعال بودن پیکر بندی وب سرور Gzip/Deflate به صورت فشرده کار خواهد کرد اما اتصال http قبل از رویداد onShutDown() بسته نخواهد شد و سرعت بارگزاری صفحه را کندتر میکند."
+ OFFLINE_WARNING: "اتصال به GPM امکان پذیر نمیباشد"
+ CLEAR_IMAGES_BY_DEFAULT: "پاکسازی حافظه موقت تصویر به صورت پیشفرض"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "به طور پیشفرض تصاویر پردازش شده از حافظه پنهان پاکسازی میشوند، این امکان میتواند غیرفعال شود"
+ CLI_COMPATIBILITY: "سازگاری CLI"
+ CLI_COMPATIBILITY_HELP: "دقت کنید فقط از کش کننده های سبک استفاده شود (file، redis، memcache و...)"
+ REINSTALL_PLUGIN: "نصب مجدد افزونه"
+ REINSTALL_THEME: "نصب مجدد پوسته"
+ REINSTALL_THE: "نصب مجدد تم %s"
+ CONFIRM_REINSTALL: "آیا از نصب مجدد %s مطمئنید؟"
+ REINSTALLED_SUCCESSFULLY: "%s با موفقیت نصب شد"
+ ERROR_REINSTALLING_THE: "خطا در نصب %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "پکیج %s با موفقیت نصب شد"
+ REINSTALLATION_FAILED: "نصب مجدد ناموفق بود"
+ TOOLS: "ابزارها"
+ DIRECT_INSTALL: "نصب مستقیم"
+ NO_PACKAGE_NAME: "نام بسته مشخص نشده است"
+ PACKAGE_EXTRACTION_FAILED: "استخراج بسته انجام نشد"
+ NOT_VALID_GRAV_PACKAGE: "بسته معتبر Grav نیست"
+ NAME_COULD_NOT_BE_DETERMINED: "نمیتوان نام را تعیین کرد"
+ CANNOT_OVERWRITE_SYMLINKS: "قادر به بازنویسی سیملینک نیست"
+ ZIP_PACKAGE_NOT_FOUND: "بستهی ZIP موجود نیست"
+ GPM_OFFICIAL_ONLY: "فقط GPM رسمی"
+ GPM_OFFICIAL_ONLY_HELP: "فقط نصب مستقیم از انباره ی GPM رسمی مجاز است."
+ NO_CHILD_TYPE: "هیچ نوع فرزندی برای این مسیر وجود ندارد"
+ SORTABLE_PAGES: "صفحات قابل مرتب شدن:"
+ UNSORTABLE_PAGES: "صفحات مرتب نشده"
+ ADMIN_SPECIFIC_OVERRIDES: "ابطال های خاص مدیر"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "ترتیب نمایش زیرمجموعهها"
+ PWD_PLACEHOLDER: "به صورت رشتههای پیچیده حداقل ۸ حرف"
+ PWD_REGEX: "ریجکس گذرواژه"
+ PWD_REGEX_HELP: "به صورت پیش فرض: رمز عبور باید حداقل یک عدد و یک حرف بزرگ و یک حرف کوچک و حداقل 8 کاراکتر داشته باشد"
+ USERNAME_PLACEHOLDER: "فقط حروف کوچک، مانند: 'admin'"
+ USERNAME_REGEX: "رجیکس نامکاربری"
+ ENABLE_AUTO_METADATA: "اطلاعات متای خودکار از Exif"
+ 2FA_TITLE: "احراز هویت دو مرحلهای"
+ 2FA_LABEL: "دسترسی مدیر"
+ 2FA_ENABLED: "احراز هویت دومرحلهای فعال شد"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "رمز احراز هویت دو مرحلهای"
+ 2FA_REGENERATE: "ایجاد مجدد"
+ FORCE_LOWERCASE_URLS: "نویسهی آدرسها به صورت اجباری با حروف کوچیک باشند"
+ FORCE_LOWERCASE_URLS_HELP: "به صورت پیشفرض Grav تمام آدرسها و مسیریابیها را با حروف کوچک انجام میدهد، اگر این گزینه را غیرفعال کنید میتوانید از حروف بزرگ استفاده کنید"
+ VIEW_SITE_TIP: "مشاهده سایت"
+ TOOLS_DIRECT_INSTALL_TITLE: "نصب مستقیم بستههای Grav"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "نصب مستقیم از طریق بارگذاری فایل ZIP"
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "نصب بسته از طریق URLمرجع"
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "بارگذاری و نصب"
+ ROUTE_DEFAULT: "مسیریابی پیشفرض"
+ ROUTE_ALIASES: "نامهای مستعار مسیریابی"
+ OPEN_NEW_TAB: "باز کردن در پنجره جدید"
+ SCHEDULER: "زمانبندی"
+ SCHEDULER_INSTALL_INSTRUCTIONS: "دستورالعمل نصب"
+ SCHEDULER_INSTALLED_READY: "نصبشده و آماده"
+ SCHEDULER_CRON_NA: "Cron موجود نیست"
+ SCHEDULER_NOT_ENABLED: "فعال نشد"
+ SCHEDULER_SETUP: "راه اندازی برنامهریز"
+ SECURITY: "امنیت"
+ REPORTS: "گزارشها"
diff --git a/user/plugins/admin/languages/fi.yaml b/user/plugins/admin/languages/fi.yaml
new file mode 100644
index 0000000..39396a9
--- /dev/null
+++ b/user/plugins/admin/languages/fi.yaml
@@ -0,0 +1,237 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Tämä on beta-versio! Käyttö tuotannossa omalla vastuulla..."
+ ADMIN_REPORT_ISSUE: "Löysitkö virheen tai puutteen? Ilmoita siitä Github-palveluun."
+ EMAIL_FOOTER: "Tehty Gravilla - Moderni Flat File CMS"
+ LOGIN_BTN: "Kirjaudu sisään"
+ LOGIN_BTN_FORGOT: "Unohditko"
+ LOGIN_BTN_RESET: "Nollaa salasana"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Lähetä salasanan nollausohjeet"
+ LOGIN_BTN_CLEAR: "Tyhjennä lomake"
+ LOGIN_BTN_CREATE_USER: "Luo käyttäjä"
+ LOGIN_LOGGED_IN: "Sisäänkirjautuminen onnistui"
+ LOGIN_FAILED: "Sisäänkirjautuminen epäonnistui"
+ LOGGED_OUT: "Olet kirjautunut ulos"
+ RESET_NEW_PASSWORD: "Anna uusi salasana …"
+ RESET_LINK_EXPIRED: "Nollauslinkki on vanhentunut, yritä uudelleen"
+ RESET_PASSWORD_RESET: "Salasana on nollattu"
+ RESET_INVALID_LINK: "Virheellinen nollauslinkki käytetty, yritä uudelleen"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Ohjeet salasanasi palautukseen lähetetty sähköpostitse osoitteeseen %s"
+ FORGOT_FAILED_TO_EMAIL: "Ohjeiden lähetys epäonnistui, yritä uudelleen myöhemmin"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Ei voida nollata salasanaa tilille %s, sähköpostiosoitetta ei ole asetettu"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Käyttäjää nimellä %s ei löydy"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Salasanaa ei voida nollata. Sivustoa ei ole määritelty lähettämään sähköpostiviestejä"
+ FORGOT_EMAIL_SUBJECT: "%s Salasanan nollauspyyntö"
+ FORGOT_EMAIL_BODY: "
Salasanan nollaaminen
%1$s,
Sivustolla %4$s on tehty pyyntö salasanasi nollaamiseksi.
Alternativement, copiez l'URL suivante dans la barre d'adresse de votre navigateur:
%2$s
Cordialement,
%3$s
"
+ MANAGE_PAGES: "Gestion des pages"
+ CONFIGURATION: "Configuration"
+ PAGES: "Pages"
+ PLUGINS: "Plugins"
+ PLUGIN: "Plugin"
+ THEMES: "Thèmes"
+ LOGOUT: "Déconnexion"
+ BACK: "Retour"
+ NEXT: "Suivant"
+ PREVIOUS: "Précédent"
+ ADD_PAGE: "Ajouter une page"
+ ADD_MODULAR: "Ajouter un contenu modulaire"
+ MOVE: "Déplacer"
+ DELETE: "Supprimer"
+ UNSET: "Débranché"
+ VIEW: "Vue"
+ SAVE: "Enregistrer"
+ NORMAL: "Normal"
+ EXPERT: "Expert"
+ EXPAND_ALL: "Tout afficher"
+ COLLAPSE_ALL: "Tout réduire"
+ ERROR: "Erreur"
+ CLOSE: "Fermer"
+ CANCEL: "Annuler"
+ CONTINUE: "Continuer"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Confirmation requise"
+ MODAL_CHANGED_DETECTED_TITLE: "Modifications détectées"
+ MODAL_CHANGED_DETECTED_DESC: "Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir quitter sans enregistrer ?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Confirmation requise"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Êtes-vous sûr de vouloir supprimer ce fichier ? Cette action ne pourra pas être annulée."
+ ADD_FILTERS: "Ajouter des filtres"
+ SEARCH_PAGES: "Rechercher des pages"
+ VERSION: "Version "
+ WAS_MADE_WITH: "A été réalisé avec"
+ BY: "Par"
+ UPDATE_THEME: "Mettre à jour le thème"
+ UPDATE_PLUGIN: "Mettre à jour le plugin"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "de ce thème est maintenant disponible"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "de ce plugin est maintenant disponible"
+ AUTHOR: "Auteur "
+ HOMEPAGE: "Page d'accueil "
+ DEMO: "Démo "
+ BUG_TRACKER: "Gestion des anomalies "
+ KEYWORDS: "Mots clés "
+ LICENSE: "Licence "
+ DESCRIPTION: "Description "
+ README: "Lisez-moi "
+ REMOVE_THEME: "Supprimer le thème"
+ INSTALL_THEME: "Installer le thème"
+ THEME: "Thème "
+ BACK_TO_THEMES: "Retour aux thèmes"
+ BACK_TO_PLUGINS: "Retour aux plugins"
+ CHECK_FOR_UPDATES: "Vérifier les mises à jour"
+ ADD: "Ajouter"
+ CLEAR_CACHE: "Vider le cache"
+ CLEAR_CACHE_ALL_CACHE: "Tous les caches"
+ CLEAR_CACHE_ASSETS_ONLY: "Uniquement les assets"
+ CLEAR_CACHE_IMAGES_ONLY: "Uniquement les images"
+ CLEAR_CACHE_CACHE_ONLY: "Uniquement le cache"
+ CLEAR_CACHE_TMP_ONLY: "Tmp seulement"
+ DASHBOARD: "Tableau de bord"
+ UPDATES_AVAILABLE: "Mises à jour disponibles"
+ DAYS: "Jours"
+ UPDATE: "Mettre à jour"
+ BACKUP: "Sauvegarder"
+ BACKUPS: "Sauvegardes"
+ BACKUP_NOW: "Sauvegarder Maintenant"
+ BACKUPS_STATS: "Statistiques de Sauvegarde"
+ BACKUPS_HISTORY: "Historique des sauvegardes"
+ BACKUPS_PURGE_CONFIG: "épurer configuration de sauvegarde"
+ BACKUPS_PROFILES: "Profils des sauvegardes"
+ BACKUPS_COUNT: "Nombre de Sauvegardes"
+ BACKUPS_PROFILES_COUNT: "Nombre de Profils"
+ BACKUPS_TOTAL_SIZE: "Espace utilisé"
+ BACKUPS_NEWEST: "Dernière sauvegarde"
+ BACKUPS_OLDEST: "Sauvegarde plus ancienne"
+ BACKUPS_PURGE: "épurer ou purger"
+ BACKUPS_NOT_GENERATED: "Aucune sauvegarde générée pour l'instant..."
+ BACKUPS_PURGE_NUMBER: "Utilisation %s de %s emplacements de sauvegardes"
+ BACKUPS_PURGE_TIME: "%s jours de sauvegarde restants"
+ BACKUPS_PURGE_SPACE: "Utilisation de %s de %s"
+ BACKUP_DELETED: "Sauvegarde supprimée avec succès"
+ BACKUP_NOT_FOUND: "Sauvegarde introuvable"
+ BACKUP_DATE: "Date de sauvegarde"
+ STATISTICS: "Statistiques"
+ TODAY: "Aujourd'hui"
+ WEEK: "Semaine"
+ MONTH: "Mois"
+ LATEST_PAGE_UPDATES: "Pages dernièrement mises à jour"
+ MAINTENANCE: "Maintenance"
+ UPDATED: "Mis à jour"
+ MON: "lun"
+ TUE: "mar"
+ WED: "mer"
+ THU: "jeu"
+ FRI: "ven"
+ SAT: "sam"
+ SUN: "dim"
+ COPY: "Copier"
+ EDIT: "Modifier"
+ CREATE: "Créer"
+ GRAV_ADMIN: "Administration de Grav"
+ GRAV_OFFICIAL_PLUGIN: "Plugin officiel Grav"
+ GRAV_OFFICIAL_THEME: "Thème officiel Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Ce plugin est lié de manière symbolique. Les mises à jour ne seront pas détectées."
+ THEME_SYMBOLICALLY_LINKED: "Ce thème est lié de manière symbolique. Les mises à jour ne seront pas détectées."
+ REMOVE_PLUGIN: "Supprimer le plugin"
+ INSTALL_PLUGIN: "Installer le plugin"
+ AVAILABLE: "Disponible"
+ INSTALLED: "Installé"
+ INSTALL: "Installer"
+ ACTIVE_THEME: "Thème actif"
+ SWITCHING_TO: "Basculer vers"
+ SWITCHING_TO_DESCRIPTION: "En basculant vers un thème différent, il n'y a aucune garantie que la mise en page soit prise en charge. Il y a un risque potentiel d'erreurs lors du chargement des dites pages."
+ SWITCHING_TO_CONFIRMATION: "Souhaitez-vous poursuivre et basculer vers le thème"
+ CREATE_NEW_USER: "Créer un nouvel utilisateur"
+ REMOVE_USER: "Supprimer l'utilisateur"
+ ACCESS_DENIED: "Accès refusé"
+ ACCOUNT_NOT_ADMIN: "votre compte ne possède pas les permissions d'administrateur"
+ PHP_INFO: "Informations PHP"
+ INSTALLER: "Installateur"
+ AVAILABLE_THEMES: "Thèmes disponibles"
+ AVAILABLE_PLUGINS: "Plugins disponibles"
+ INSTALLED_THEMES: "Thèmes installés"
+ INSTALLED_PLUGINS: "Plugins installés"
+ BROWSE_ERROR_LOGS: "Parcourir le journal des erreurs"
+ SITE: "Site"
+ INFO: "Informations"
+ SYSTEM: "Système"
+ USER: "Utilisateur"
+ ADD_ACCOUNT: "Ajouter un compte"
+ SWITCH_LANGUAGE: "Changer de langue"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Plugin activé avec succès"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Plugin désactivé avec succès"
+ SUCCESSFULLY_CHANGED_THEME: "Thème par défaut changé avec succès"
+ INSTALLATION_FAILED: "Échec de l'installation"
+ INSTALLATION_SUCCESSFUL: "Installation réussie"
+ UNINSTALL_FAILED: "La désinstallation a échoué"
+ UNINSTALL_SUCCESSFUL: "Désinstallation réussie"
+ SUCCESSFULLY_SAVED: "Enregistrement réussi"
+ SUCCESSFULLY_COPIED: "Copié avec succès"
+ REORDERING_WAS_SUCCESSFUL: "La réorganisation a été un succès"
+ SUCCESSFULLY_DELETED: "Supprimé avec succès"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Langue changée avec succès"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Vous n'avez pas les permissions nécessaires pour effectuer cette tâche"
+ CACHE_CLEARED: "Cache vidé"
+ METHOD: "Méthode "
+ ERROR_CLEARING_CACHE: "Erreur lors du vidage du cache"
+ AN_ERROR_OCCURRED: "Une erreur est survenue"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Votre sauvegarde est prête à être téléchargée"
+ DOWNLOAD_BACKUP: "Télécharger la sauvegarde"
+ PAGES_FILTERED: "Pages filtrées"
+ NO_PAGE_FOUND: "Aucune page trouvée"
+ INVALID_PARAMETERS: "Paramètres invalides"
+ NO_FILES_SENT: "Aucun fichier envoyé"
+ EXCEEDED_FILESIZE_LIMIT: "Dépassement de la limite de taille de fichier dans la configuration PHP"
+ EXCEEDED_POSTMAX_LIMIT: "Configuration PHP post_max_size dépassée"
+ UNKNOWN_ERRORS: "Erreurs inconnues"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Dépassement de la limite de taille de fichier dans la configuration de Grav"
+ UNSUPPORTED_FILE_TYPE: "Type de fichier non supporté"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Échec lors du déplacement du fichier envoyé."
+ FILE_UPLOADED_SUCCESSFULLY: "Fichier chargé avec succès"
+ FILE_DELETED: "Fichier supprimé"
+ FILE_COULD_NOT_BE_DELETED: "Le fichier n'a pas pu pas être supprimé"
+ FILE_NOT_FOUND: "Fichier non trouvé"
+ NO_FILE_FOUND: "Aucun fichier trouvé"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav a été mis à jour avec succès"
+ GRAV_UPDATE_FAILED: "La mise à jour de Grav a échoué"
+ EVERYTHING_UPDATED: "Tout est à jour"
+ UPDATES_FAILED: "Les mises à jour ont échoué"
+ AVATAR_BY: "Avatar par"
+ AVATAR_UPLOAD_OWN: "Ou chargez le votre..."
+ LAST_BACKUP: "Dernière sauvegarde"
+ FULL_NAME: "Nom complet"
+ USERNAME: "Nom d'utilisateur"
+ EMAIL: "E-mail"
+ USERNAME_EMAIL: "Nom d'utilisateur ou e-mail"
+ PASSWORD: "Mot de passe"
+ PASSWORD_CONFIRM: "Confirmer le mot de passe"
+ TITLE: "Titre"
+ LANGUAGE: "Langue"
+ ACCOUNT: "Compte"
+ EMAIL_VALIDATION_MESSAGE: "Doit être une adresse e-mail valide"
+ PASSWORD_VALIDATION_MESSAGE: "Le mot de passe doit contenir au moins un chiffre, une lettre minuscule, majuscule et au minimum 8 caractères."
+ LANGUAGE_HELP: "Définir la langue préférée"
+ MEDIA: "Média"
+ DEFAULTS: "Par défaut"
+ SITE_TITLE: "Titre du site"
+ SITE_TITLE_PLACEHOLDER: "Titre général du site"
+ SITE_TITLE_HELP: "Titre par défaut pour votre site, souvent utilisé dans les thèmes"
+ SITE_DEFAULT_LANG: "Langue par défaut"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Langue par défaut à utiliser dans la balise du thème"
+ SITE_DEFAULT_LANG_HELP: "Langue par défaut à utiliser dans la balise du thème"
+ DEFAULT_AUTHOR: "Auteur par défaut"
+ DEFAULT_AUTHOR_HELP: "Un nom d'auteur par défaut, souvent utilisé dans les thèmes ou le contenu des pages"
+ DEFAULT_EMAIL: "E-mail par défaut"
+ DEFAULT_EMAIL_HELP: "Un e-mail par défaut de référence pour les thèmes ou pages."
+ TAXONOMY_TYPES: "Types de taxonomie"
+ TAXONOMY_TYPES_HELP: "Les types de taxinomie doivent être définis ici si vous souhaitez les utiliser dans les pages."
+ PAGE_SUMMARY: "Résumé de page"
+ ENABLED: "Activé"
+ ENABLED_HELP: "Activer le résumé de page (le résumé retourne le même contenu que la page)"
+ 'YES': "Oui"
+ 'NO': "Non"
+ SUMMARY_SIZE: "Longueur du résumé"
+ SUMMARY_SIZE_HELP: "Le nombre de caractères de la page à utiliser comme contenu de résumé"
+ FORMAT: "Format"
+ FORMAT_HELP: "court = utilise la première occurrence du délimiteur ou la taille ; long = le délimiteur de résumé sera ignoré"
+ SHORT: "Court"
+ LONG: "Long"
+ DELIMITER: "Délimiteur"
+ DELIMITER_HELP: "Le délimiteur de résumé (par défaut '===')"
+ METADATA: "Métadonnées"
+ METADATA_HELP: "Valeurs par défaut des métadonnées qui seront affichées pour chaque page sauf si substituées par la page"
+ NAME: "Nom"
+ CONTENT: "Contenu"
+ SIZE: "Taille"
+ ACTION: "Action"
+ REDIRECTS_AND_ROUTES: "Redirections & Chemins"
+ CUSTOM_REDIRECTS: "Redirections personnalisées"
+ CUSTOM_REDIRECTS_HELP: "chemin pour rediriger vers d'autres pages. Le remplacement par expressions régulières standards est valide"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/votre/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/votre/redirection"
+ CUSTOM_ROUTES: "Chemins personnalisés"
+ CUSTOM_ROUTES_HELP: "routes pour rediriger vers d'autres pages. Le remplacement par expressions rationnelles est possible"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/votre/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/votre/route"
+ FILE_STREAMS: "Flux de fichiers"
+ DEFAULT: "Par défaut"
+ PAGE_MEDIA: "Médias de la page"
+ OPTIONS: "Options"
+ PUBLISHED: "Publié"
+ PUBLISHED_HELP: "Par défaut, une page est publiée sauf si le paramètre Publiée est défini a 'Non', si la date de publication est dans le futur ou celle de retrait dans le passé"
+ DATE: "Date"
+ DATE_HELP: "La variable de date vous permet de définir une date spécifique associée à cette page."
+ PUBLISHED_DATE: "Date de publication"
+ PUBLISHED_DATE_HELP: "Permet de définir une date pour déclencher automatiquement la publication."
+ UNPUBLISHED_DATE: "Date de dépublication"
+ UNPUBLISHED_DATE_HELP: "Permet de définir une date pour déclencher automatiquement la dépublication."
+ ROBOTS: "Robots"
+ TAXONOMIES: "Taxonomies"
+ TAXONOMY: "Taxinomie"
+ ADVANCED: "Avancé"
+ SETTINGS: "Paramètres"
+ FOLDER_NUMERIC_PREFIX: "Préfixe numérique de dossier"
+ FOLDER_NUMERIC_PREFIX_HELP: "Les préfixes numériques qui permettent le classement manuel pour une meilleure visibilité"
+ FOLDER_NAME: "Nom de dossier"
+ FOLDER_NAME_HELP: "Le nom de dossier qui sera stocké dans le système de fichier pour cette page."
+ PARENT: "Parent"
+ DEFAULT_OPTION_ROOT: "- Racine -"
+ DEFAULT_OPTION_SELECT: "-Sélectionner-"
+ DISPLAY_TEMPLATE: "Template d'affichage"
+ DISPLAY_TEMPLATE_HELP: "Modèle d'affichage qui sera utilisé par twig pour effectuer le rendu de la page"
+ BODY_CLASSES: "Classes du Body"
+ ORDERING: "Ordre"
+ PAGE_ORDER: "Ordre des pages"
+ OVERRIDES: "Substitutions"
+ MENU: "Menu"
+ MENU_HELP: "La chaîne de caractères à utiliser dans le menu. Si non défini, le Titre sera utilisé."
+ SLUG: "Slug"
+ SLUG_HELP: "La variable slug vous permet de définir une portion spécifique de l'URL d'une page"
+ SLUG_VALIDATE_MESSAGE: "Un slug doit contenir uniquement des caractères alphanumériques minuscules et des traits d'union"
+ PROCESS: "Traitement"
+ PROCESS_HELP: "Contrôle la façon dont les pages sont traitées. Peut être défini par page plutôt que globalement"
+ DEFAULT_CHILD_TYPE: "Type enfant par défaut"
+ USE_GLOBAL: "Utilisation globale"
+ ROUTABLE: "Accessible"
+ ROUTABLE_HELP: "Si cette page est accessible par une URL"
+ CACHING: "Mise en cache"
+ VISIBLE: "Visible"
+ VISIBLE_HELP: "Détermine si une page est visible dans la navigation."
+ DISABLED: "Désactivé"
+ ITEMS: "Éléments"
+ ORDER_BY: "Trier par"
+ ORDER: "Ordre"
+ FOLDER: "Dossier"
+ ASCENDING: "Croissant"
+ DESCENDING: "Décroissant"
+ ADD_MODULAR_CONTENT: "Ajouter un contenu modulaire"
+ PAGE_TITLE: "Titre de page"
+ PAGE_TITLE_HELP: "Le titre de la page"
+ PAGE: "Page"
+ MODULAR_TEMPLATE: "Template modulaire"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Nom de fichier"
+ PARENT_PAGE: "Page parente"
+ HOME_PAGE: "Page d'accueil"
+ HOME_PAGE_HELP: "La page que Grav utilisera comme page de destination par défaut"
+ DEFAULT_THEME: "Thème par défaut"
+ DEFAULT_THEME_HELP: "Définit le thème que Grav utilisera par défaut (par défaut Antimatter)"
+ TIMEZONE: "Fuseau horaire"
+ TIMEZONE_HELP: "Substitution au fuseau horaire par défaut du serveur"
+ SHORT_DATE_FORMAT: "Format d'affichage court de la date"
+ SHORT_DATE_FORMAT_HELP: "Définit le format de date courte qui peut être utilisé dans les thèmes"
+ LONG_DATE_FORMAT: "Format d'affichage long de la date"
+ LONG_DATE_FORMAT_HELP: "Définit le format de la date longue qui peut être utilisé dans les thèmes"
+ DEFAULT_ORDERING: "Tri par défaut"
+ DEFAULT_ORDERING_HELP: "Les pages d'une liste seront affichées en utilisant ce tri à moins qu'il est été substitué."
+ DEFAULT_ORDERING_DEFAULT: "Défaut - basé sur le nom de dossier"
+ DEFAULT_ORDERING_FOLDER: "Dossier - basé sur le nom de dossier sans le préfixe"
+ DEFAULT_ORDERING_TITLE: "Titre - basé sur le champ titre de l'en-tête"
+ DEFAULT_ORDERING_DATE: "Date - basé sur le champ date de l'en-tête"
+ DEFAULT_ORDER_DIRECTION: "Sens du tri par défaut"
+ DEFAULT_ORDER_DIRECTION_HELP: "Le sens d'affichage des pages dans une liste (classement)"
+ DEFAULT_PAGE_COUNT: "Nombre de pages par défaut"
+ DEFAULT_PAGE_COUNT_HELP: "Nombre maximum de pages dans une liste par défaut"
+ DATE_BASED_PUBLISHING: "Publication basée sur la date"
+ DATE_BASED_PUBLISHING_HELP: "(Dé)publie automatiquement les pages en fonction de leur date"
+ EVENTS: "Évènements"
+ EVENTS_HELP: "Active ou désactive des évènements spécifiques. Les désactiver peut altérer le comportement des plugins"
+ REDIRECT_DEFAULT_ROUTE: "Route par défaut de redirection"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Redirige automatiquement vers une route de page par défaut"
+ LANGUAGES: "Langues"
+ SUPPORTED: "Prises en charge"
+ SUPPORTED_HELP: "Liste de code langue formé de 2 lettres et séparé par une virgule (par exemple 'en,fr,de')"
+ TRANSLATIONS_ENABLED: "Traductions activées"
+ TRANSLATIONS_ENABLED_HELP: "Prise en charge des traductions dans Grav, plugins et extensions"
+ TRANSLATIONS_FALLBACK: "Traductions de repli"
+ TRANSLATIONS_FALLBACK_HELP: "Traductions de repli qui seront prises en charge si la langue active n'existe pas"
+ ACTIVE_LANGUAGE_IN_SESSION: "Activer la langue dans les sessions"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Mémorise la langue active dans la session"
+ HTTP_HEADERS: "En-têtes HTTP"
+ EXPIRES: "Expire"
+ EXPIRES_HELP: "Définit l'expiration de l'en-tête. La valeur est en secondes."
+ CACHE_CONTROL: "Contrôle du cache HTTP"
+ CACHE_CONTROL_HELP: "Définissez une valeur de cache-control valide telle que `no-cache, no-store, must-revalidate`"
+ LAST_MODIFIED: "Last modified"
+ LAST_MODIFIED_HELP: "Définit l'en-tête 'Last modified' pouvant améliorer l'optimisation du cache des proxies et navigateurs"
+ ETAG: "ETag"
+ ETAG_HELP: "Définit l'en-tête 'ETag' afin d'aider à identifier quand une page a été modifiée."
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Définit l'en-tête 'Vary: Accept Encoding' afin d'aider la mise en cache avec les proxy et CDN."
+ MARKDOWN: "Démarquage"
+ MARKDOWN_EXTRA: "Markdown Extra"
+ MARKDOWN_EXTRA_HELP: "Active par défaut la prise en charge de Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Échapper aux éléments HTML dans les clôtures supplémentaires de démarquage"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Échappe les éléments HTML dans les clôtures supplémentaires de démarque"
+ AUTO_LINE_BREAKS: "Sauts de ligne automatiques"
+ AUTO_LINE_BREAKS_HELP: "Active la prise en charge des sauts de ligne automatiques dans markdown"
+ AUTO_URL_LINKS: "Liens URL automatiques"
+ AUTO_URL_LINKS_HELP: "Active la conversion automatique des URL en hyperliens HTML"
+ ESCAPE_MARKUP: "Échappement des balises HTML"
+ ESCAPE_MARKUP_HELP: "Échappe les balises en entités HTML"
+ CACHING_HELP: "Interrupteur global ON/OFF pour activer/désactiver la mise en cache Grav"
+ CACHE_CHECK_METHOD: "Méthode de contrôle du cache"
+ CACHE_CHECK_METHOD_HELP: "Sélectionnez la méthode que Grav utilisera pour contrôler si les fichiers de page ont été modifiés."
+ CACHE_DRIVER: "Gestionnaire de cache"
+ CACHE_DRIVER_HELP: "Sélectionner le gestionnaire de cache que Grav devrait utiliser. 'Auto Detect' permet de trouver le meilleur pour vous"
+ CACHE_PREFIX: "Préfixe du cache"
+ CACHE_PREFIX_HELP: "Un identificateur d'une partie de la clé Grav. Ne rien changer à moins que vous sachiez ce que vous faites."
+ CACHE_PREFIX_PLACEHOLDER: "Dérivé de l'URL de base (entrez une chaîne aléatoire pour remplacer)"
+ CACHE_PURGE_JOB: "Exécuter la tâche programmée de purge"
+ CACHE_PURGE_JOB_HELP: "Avec le planificateur, vous pouvez périodiquement effacer les anciens dossiers de cache et de fichiers de Doctrine"
+ CACHE_CLEAR_JOB: "Exécution d'une tâche de suppression planifiée"
+ CACHE_CLEAR_JOB_HELP: "Vous pouvez effacer le cache Grav avec le planificateur"
+ CACHE_JOB_TYPE: "Type de tâche de cache"
+ CACHE_JOB_TYPE_HELP: "Supprimer le cache des dossiers en utilisant la suppression 'standard', ou en utilisant 'tous' les dossiers"
+ CACHE_PURGE: "Purger toutes les caches"
+ LIFETIME: "Durée de vie"
+ LIFETIME_HELP: "Définit la durée de vie du cache en secondes. 0 = infinie"
+ GZIP_COMPRESSION: "Compression Gzip"
+ GZIP_COMPRESSION_HELP: "Active la compression GZip des pages Grav pour améliorer les performances."
+ TWIG_TEMPLATING: "Templating Twig"
+ TWIG_CACHING: "Mise en cache Twig"
+ TWIG_CACHING_HELP: "Contrôle le mécanisme de mise en cache de Twig. Laissez-le activé pour une meilleur performance."
+ TWIG_DEBUG: "Débogage Twig"
+ TWIG_DEBUG_HELP: "Autorise ou non l'option permettant de charger l'extension Twig Debugger"
+ DETECT_CHANGES: "Détecter les modifications"
+ DETECT_CHANGES_HELP: "Twig recompilera automatiquement le cache Twig si il détecte des modifications dans les modèles Twig"
+ AUTOESCAPE_VARIABLES: "Auto-échappement des variables"
+ AUTOESCAPE_VARIABLES_HELP: "Auto-échappe toutes les variables. Cela va probablement impacter votre site."
+ ASSETS: "Assets"
+ CSS_PIPELINE: "Concaténation CSS"
+ CSS_PIPELINE_HELP: "La concaténation CSS permet l'unification de multiples ressources CSS en un seul fichier"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Inclure les CSS externes dans la concaténation"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Il arrive parfois que les URL externes intègrent des références de fichiers relatives et ne devraient pas être soumises à la concaténation."
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Traitement des CSS concaténés en premier"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Traiter les CSS concaténés avant les autres références CSS non intégrées."
+ CSS_MINIFY: "Minification CSS"
+ CSS_MINIFY_HELP: "Minification du CSS durant la procédure de concaténation"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "Substitution minification CSS Windows"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Minification pour plateformes Windows. Non par défaut en raison de ThreadStackSize"
+ CSS_REWRITE: "Réécriture CSS"
+ CSS_REWRITE_HELP: "Réécriture des URL relatives de CSS durant la procédure de concaténation"
+ JAVASCRIPT_PIPELINE: "Concaténation JavaScript"
+ JAVASCRIPT_PIPELINE_HELP: "La concaténation JS permet l'unification de multiples ressources JS en un seul fichier"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Inclure les JS externes dans la concaténation"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Il arrive parfois que les URL externes intègrent des références de fichiers relatives et ne devraient pas être soumises à la concaténation."
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Traitement des JS concaténés en premier"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Traiter les JS concaténés avant les autres références JS non intégrées."
+ JAVASCRIPT_MINIFY: "Minification JavaScript"
+ JAVASCRIPT_MINIFY_HELP: "Minification du JS durant la procédure de concaténation"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Active l'horodatage des assets"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Active l'horodatage des assets"
+ COLLECTIONS: "Collections"
+ ERROR_HANDLER: "Gestionnaire des erreurs"
+ DISPLAY_ERRORS: "Afficher les erreurs"
+ DISPLAY_ERRORS_HELP: "Affiche une page d'erreurs détaillée"
+ LOG_ERRORS: "Journal des erreurs"
+ LOG_ERRORS_HELP: "Journal des erreurs pour le dossier /logs"
+ LOG_HANDLER: "Gestionnaire de journal"
+ LOG_HANDLER_HELP: "Où sortir les journaux"
+ SYSLOG_FACILITY: "Installation Syslog"
+ SYSLOG_FACILITY_HELP: "Installation Syslog pour sortie"
+ DEBUGGER: "Débogueur"
+ DEBUGGER_HELP: "Active le débogueur Grav et les paramètres associés"
+ DEBUG_TWIG: "Débogage Twig"
+ DEBUG_TWIG_HELP: "Active le débogage des templates Twig"
+ SHUTDOWN_CLOSE_CONNECTION: "Shutdown ferme la connexion"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Ferme la connexion avant d'appeler onShutdown(). Sur 'false' pour débogage."
+ DEFAULT_IMAGE_QUALITY: "Qualité d'image par défaut"
+ DEFAULT_IMAGE_QUALITY_HELP: "Qualité d'image par défaut à utiliser lors du rééchantillonnage ou de la mise en cache des images (85%)."
+ CACHE_ALL: "Mise en cache de toutes les images"
+ CACHE_ALL_HELP: "Gérer toutes les images via le système de cache de Grav même si il n'y pas de manipulations de média"
+ IMAGES_DEBUG: "Filigrane de débogage d'image"
+ IMAGES_DEBUG_HELP: "Affiche une incrustation sur les images indiquant la profondeur de pixel de l'image lorsque l'on travaille avec retina par exemple."
+ IMAGES_SEOFRIENDLY: "Noms d'images optimisés SEO"
+ IMAGES_SEOFRIENDLY_HELP: "Lorsque activé, le nom de l'image est affiché en premier, puis un condensé plus petit pour refléter les opérations traitées"
+ UPLOAD_LIMIT: "Taille limite d'envoi pour un fichier"
+ UPLOAD_LIMIT_HELP: "Définir la taille maximum de chargement en octets (0 pour illimitée)"
+ ENABLE_MEDIA_TIMESTAMP: "Active l'horodatage sur les médias"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Ajoute un horodatage basé sur la dernière date de modification à chaque objet média"
+ SESSION: "Session"
+ SESSION_ENABLED_HELP: "Activer le support de session au sein de Grav"
+ TIMEOUT: "Durée de session"
+ TIMEOUT_HELP: "Définit la durée d'activité de la session en secondes"
+ SESSION_NAME_HELP: "Identifiant utilisé pour composer le nom du cookie de session"
+ SESSION_UNIQUENESS: "Chaîne unique"
+ SESSION_UNIQUENESS_HELP: "hash MD5 du chemin racine de Grav, ex `GRAV_ROOT' (par défaut) ou un basé sur la chaîne aléatoire `security.salt'."
+ ABSOLUTE_URLS: "URL absolues"
+ ABSOLUTE_URLS_HELP: "URL absolues ou relatives pour 'base_url'"
+ PARAMETER_SEPARATOR: "Séparateur de paramètres"
+ PARAMETER_SEPARATOR_HELP: "Séparateur pour les paramètres passés qui peuvent être changés pour Apache sur Windows"
+ TASK_COMPLETED: "Tâches complétées"
+ EVERYTHING_UP_TO_DATE: "Tout est à jour"
+ UPDATES_ARE_AVAILABLE: "des mises à jour sont disponibles"
+ IS_AVAILABLE_FOR_UPDATE: "est disponible pour mise à jour"
+ IS_NOW_AVAILABLE: "est maintenant disponible"
+ CURRENT: "Actuel"
+ UPDATE_GRAV_NOW: "Mettre à jour Grav maintenant"
+ GRAV_SYMBOLICALLY_LINKED: "Grav est symboliquement lié. Les mises à jour ne seront pas disponibles"
+ UPDATING_PLEASE_WAIT: "Mise à jour... veuillez patienter, téléchargement"
+ OF_THIS: "de ce"
+ OF_YOUR: "de votre"
+ HAVE_AN_UPDATE_AVAILABLE: "a une mise à jour disponible"
+ SAVE_AS: "Enregistrer sous"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Êtes-vous sûr de vouloir supprimer cette page et tous ses enfants ? Si la page est traduite dans d'autres langues, ces traductions seront conservées et devront être supprimées séparément. Sinon, le dossier de la page sera supprimé avec ses sous-pages. Cette action ne pourra pas être annulée."
+ AND: "et"
+ UPDATE_AVAILABLE: "Mise à jour disponible"
+ METADATA_KEY: "Clé (ex : 'mots clés')"
+ METADATA_VALUE: "Valeur (ex : 'Blog, Grav')"
+ USERNAME_HELP: "Le nom d'utilisateur doit être composé de 3 à 16 caractères, pouvant inclure des lettres minuscules, nombres, caractère de soulignement et traits d'union. Les lettres majuscules, espaces et caractères spéciaux ne sont pas autorisés."
+ FULLY_UPDATED: "À jour"
+ SAVE_LOCATION: "Enregistrer vers"
+ PAGE_FILE: "Template de page"
+ PAGE_FILE_HELP: "Le nom du fichier template de la page, et par défaut, le template d'affichage pour cette page"
+ NO_USER_ACCOUNTS: "Aucun compte utilisateur trouvé. Veuillez en créer un..."
+ NO_USER_EXISTS: "Aucun utilisateur local n'existe pour ce compte, impossible de sauvegarder..."
+ REDIRECT_TRAILING_SLASH: "Slash final de redirection"
+ REDIRECT_TRAILING_SLASH_HELP: "Effectue une redirection de type 301 au lieu de traiter de façon transparente le slash final d'URI."
+ DEFAULT_DATE_FORMAT: "Format de date des pages"
+ DEFAULT_DATE_FORMAT_HELP: "Format de la date des pages utilisé par Grav. Par défaut, Grav essaie de deviner votre format de date, toutefois vous pouvez spécifier un format en utilisant la syntaxe des dates de PHP (ex : d-m-Y H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Sélectionner automatiquement"
+ IGNORE_FILES: "Ignorer les fichiers"
+ IGNORE_FILES_HELP: "Fichiers spécifiques à ignorer lors du traitement des pages"
+ IGNORE_FOLDERS: "Ignorer les dossiers"
+ IGNORE_FOLDERS_HELP: "Dossiers spécifiques à ignorer lors du traitement des pages"
+ HIDE_EMPTY_FOLDERS: "Cacher les répertoires vides"
+ HIDE_EMPTY_FOLDERS_HELP: "Si le répertoire n'a pas de fichier .md, doit-il être caché à la navigation tout en étant non-routable"
+ HTTP_ACCEPT_LANGUAGE: "Définir la langue à partir du navigateur"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Vous pouvez tenter de définir la langue en se basant sur la balise d'en-tête http_accept_language du navigateur."
+ OVERRIDE_LOCALE: "Remplacer le réglage de langue PHP"
+ OVERRIDE_LOCALE_HELP: "Substituer le réglage de langue dans PHP par la langue actuelle"
+ REDIRECT: "Redirection de page"
+ REDIRECT_HELP: "Saisir une route ou une URL externe vers laquelle cette page sera redirigée. ex : '/une/route/' ou 'http://site-externe.com'"
+ PLUGIN_STATUS: "Statut du plugin"
+ INCLUDE_DEFAULT_LANG: "Inclure la langue par défaut"
+ INCLUDE_DEFAULT_LANG_HELP: "Toutes les URL de langue seront préfixées avec la langue par défaut. ex : `/fr/blog/mon-post`"
+ PAGES_FALLBACK_ONLY: "Pages de secours uniquement"
+ PAGES_FALLBACK_ONLY_HELP: "Seul 'repli' pour trouver le contenu de la page à travers les langues supportées, le comportement par défaut est d'afficher n'importe quelle langue trouvée si la langue active manque."
+ ALLOW_URL_TAXONOMY_FILTERS: "Filtres de taxonomie d'URL"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Les collections basées sur des pages vous permettent de filtrer via `/taxonomy:valeur`."
+ REDIRECT_DEFAULT_CODE: "Code de redirection par défaut"
+ REDIRECT_DEFAULT_CODE_HELP: "Le code du statut HTTP à utiliser pour les redirections"
+ IGNORE_HIDDEN: "Ignorer les fichiers cachés"
+ IGNORE_HIDDEN_HELP: "Ignorer tous les fichiers et dossiers qui commencent par un point"
+ WRAPPED_SITE: "Site encapsulé"
+ WRAPPED_SITE_HELP: "Pour que les thèmes/plugins sachent si Grav est intégré par une autre plateforme"
+ FALLBACK_TYPES: "Types de fallback autorisés"
+ FALLBACK_TYPES_HELP: "Types de fichiers autorisés qui peuvent être trouvés via le chemin des pages. Par défaut, tous les types de fichier sont supportés."
+ INLINE_TYPES: "Types de fichiers en ligne"
+ INLINE_TYPES_HELP: "Une liste de types de fichier qui peuvent être affichés en ligne plutôt que d'être téléchargés."
+ APPEND_URL_EXT: "Ajouter l'extension à l'URL"
+ APPEND_URL_EXT_HELP: "Ajoutera une extension personnalisée à l'URL de la page. Remarque : cela implique que Grav va rechercher le template d'affichage `..twig`."
+ PAGE_MODES: "Modes de page"
+ PAGE_TYPES: "Types de page"
+ PAGE_TYPES_HELP: "Détermine les types de pages pris en charge par Grav et l'ordre détermine à quel type de page revenir si la requête est ambiguë"
+ ACCESS_LEVELS: "Niveaux d'accès"
+ GROUPS: "Groupes"
+ GROUPS_HELP: "Liste des groupes dont l'utilisateur fait partie"
+ ADMIN_ACCESS: "Accès à l'administration"
+ SITE_ACCESS: "Accès au site"
+ INVALID_SECURITY_TOKEN: "Jeton de sécurité invalide"
+ ACTIVATE: "Activer"
+ TWIG_UMASK_FIX: "Correctif Umask"
+ TWIG_UMASK_FIX_HELP: "Par défaut, Twig va créer des fichiers en 0755, le correctif va les basculer en 0775."
+ CACHE_PERMS: "Permissions des caches"
+ CACHE_PERMS_HELP: "Permissions pour les dossiers de cache par défaut. Habituellement en 0755 ou 0775 en fonction des réglages."
+ REMOVE_SUCCESSFUL: "Suppression réussie"
+ REMOVE_FAILED: "Échec de la suppression"
+ HIDE_HOME_IN_URLS: "Masquer le chemin de l'accueil dans les URL"
+ HIDE_HOME_IN_URLS_HELP: "Assurera que les chemins par défaut pour toutes les pages dépendantes de la page d'accueil ne feront pas référence au chemin normalement utilisé pour la page d'accueil"
+ TWIG_FIRST: "Traiter Twig en premier"
+ TWIG_FIRST_HELP: "Si vous avez activé le traitement Twig de la page, vous pouvez définir le traitement de Twig avant ou après celui de markdown."
+ SESSION_SECURE: "Sécuriser"
+ SESSION_SECURE_HELP: "Si défini sur Oui, indique que la communication pour ce cookie doit se faire via une transmission cryptée. AVERTISSEMENT : à activer uniquement sur les sites qui fonctionnent exclusivement en HTTPS."
+ SESSION_HTTPONLY: "HTTP uniquement"
+ SESSION_HTTPONLY_HELP: "Si défini sur Oui, indique que les cookies doivent être utilisés uniquement pour les sites en HTTP et que la modification JavaScript n'est pas autorisée."
+ REVERSE_PROXY: "Proxy inversé"
+ REVERSE_PROXY_HELP: "Activer si vous êtes derrière un proxy inversé et que vous rencontrez des problèmes avec les URL contenant des ports incorrects."
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmatter non valide, enregistrement impossible"
+ ADD_FOLDER: "Ajouter un dossier"
+ PROXY_URL: "URL du proxy"
+ PROXY_URL_HELP: "Indiquez le proxy HÔTE ou l'IP et le PORT"
+ NOTHING_TO_SAVE: "Rien à enregistrer"
+ FILE_ERROR_ADD: "Une erreur s'est produite lors de la tentative d'ajout du fichier"
+ FILE_ERROR_UPLOAD: "Une erreur s'est produite lors de la tentative de chargement du fichier"
+ FILE_UNSUPPORTED: "Type de fichier non pris en charge"
+ ADD_ITEM: "Ajouter un élément"
+ FILE_TOO_LARGE: "Le fichier est trop volumineux pour être téléchargé, le maximum autorisé est de %s selon vos paramètres PHP. Veuillez augmenter votre paramètre PHP `post_max_size`."
+ INSTALLING: "Installation en cours"
+ LOADING: "Chargement..."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Les dépendances suivantes sont requises pour pouvoir continuer :"
+ ERROR_INSTALLING_PACKAGES: "Erreur lors de l'installation de(s) paquet(s)"
+ INSTALLING_DEPENDENCIES: "Installation des dépendances..."
+ INSTALLING_PACKAGES: "Installation de paquet(s)..."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Paquet(s) installé(s) avec succès."
+ READY_TO_INSTALL_PACKAGES: "Prêt pour l'installation de paquet(s)"
+ PACKAGES_NOT_INSTALLED: "Paquets non installés"
+ PACKAGES_NEED_UPDATE: "Paquets déjà installés, mais obsolètes"
+ PACKAGES_SUGGESTED_UPDATE: "Paquets installés dont la version est valide, mais qui seront mis à jour vers la dernière version"
+ REMOVE_THE: "Supprimer le %s"
+ CONFIRM_REMOVAL: "Êtes-vous sûr de vouloir supprimer ce %s ?"
+ REMOVED_SUCCESSFULLY: "%s a été supprimé avec succès"
+ ERROR_REMOVING_THE: "Erreur lors de la suppression de %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s possédait les dépendances suivantes qui ne sont pas requises par d'autres paquets installés. Si vous ne les utilisez pas, vous pouvez les supprimer directement ici."
+ READY_TO_UPDATE_PACKAGES: "Prêt à mettre à jour le(s) paquet(s)"
+ ERROR_UPDATING_PACKAGES: "Erreur lors de la mise à jour de(s) paquet(s)"
+ UPDATING_PACKAGES: "Mise à jour de(s) paquet(s) en cours..."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Paquet(s) mis à jour avec succès."
+ UPDATING: "Mise à jour"
+ GPM_RELEASES: "Versions GPM"
+ GPM_RELEASES_HELP: "Choisir 'En test' pour installer les versions bêta ou de test"
+ GPM_METHOD: "Méthode de récupération à distance"
+ GPM_METHOD_HELP: "Lorsque réglé sur Auto, Grav va déterminer si fopen est disponible et l'utiliser sinon, il utilisera cURL. Pour forcer l’utilisation de l’un ou l’autre, il suffit de changer le réglage."
+ GPM_VERIFY_PEER: "Vérification à distance Peer (SSL)"
+ GPM_VERIFY_PEER_HELP: "Certains fournisseurs semblent échouer lors de la vérification du certificat SSL getgrav.org empèchant GPM de fonctionner. Si c’est le cas pour vous, désactiver ce paramètre peut aider."
+ AUTO: "Auto"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stable"
+ TESTING: "En test"
+ FRONTMATTER_PROCESS_TWIG: "Traitement du Twig dans Frontmatter"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Si activé, vous pouvez utiliser des variables de configuration Twig dans le frontmatter de la page."
+ FRONTMATTER_IGNORE_FIELDS: "Ignorer les champs frontmatter"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Certains champs frontmatter peuvent contenir du Twig qui ne devraient pas être traités, les formulaires par exemple."
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Paquet %s installé avec succès"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "L'ordre est défini par le parent, le tri est désactivé"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "La page n'est pas visible, le tri est désactivé"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "La gestion de l'ordre des pages n'est pas disponible dans l'interface d'administration au-delà de 200 éléments"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Le classement des pages est désactivé pour cette page car l'option Préfixe Numérique du dossier n'est pas activé"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "Remarque : Vous ne pouvez pas ajouter de fichiers multimédias avant d'avoir enregistré la page. Cliquez sur `Enregistrer` en haut."
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "Remarque : La Page doit être enregistrée avant de pouvoir y télécharger des fichiers."
+ DROP_FILES_HERE_TO_UPLOAD: "Déposez vos fichiers ici ou cliquez dans cette zone"
+ INSERT: "Insérer"
+ UNDO: "Annuler"
+ REDO: "Rétablir"
+ HEADERS: "En-têtes"
+ BOLD: "Gras"
+ ITALIC: "Italique"
+ STRIKETHROUGH: "Barré"
+ SUMMARY_DELIMITER: "Délimiteur de résumé"
+ LINK: "Lien"
+ IMAGE: "Image"
+ BLOCKQUOTE: "Citation"
+ UNORDERED_LIST: "Liste non ordonnée"
+ ORDERED_LIST: "Liste ordonnée"
+ EDITOR: "Éditeur"
+ PREVIEW: "Aperçu"
+ FULLSCREEN: "Plein écran"
+ MODULAR: "Modulaire"
+ MODULAR_SETUP: "Configuration modulaire"
+ NON_ROUTABLE: "Non routable"
+ NON_MODULAR: "Non modulaire"
+ NON_VISIBLE: "Non visible"
+ NON_PUBLISHED: "Non publié"
+ CHARACTERS: "caractères"
+ PUBLISHING: "Publication"
+ NOTIFICATIONS: "Notifications"
+ MEDIA_TYPES: "Types de média"
+ IMAGE_OPTIONS: "Options d'image"
+ MIME_TYPE: "Type Mime"
+ THUMB: "Miniature"
+ TYPE: "Type"
+ FILE_EXTENSION: "Extension de fichier"
+ LEGEND: "Légende de la page"
+ MEMCACHE_SERVER: "Serveur Memcache"
+ MEMCACHE_SERVER_HELP: "L’adresse du serveur Memcache"
+ MEMCACHE_PORT: "Port Memcache"
+ MEMCACHE_PORT_HELP: "Le port du serveur Memcache"
+ MEMCACHED_SERVER: "Serveur Memcached"
+ MEMCACHED_SERVER_HELP: "L’adresse du serveur Memcached"
+ MEMCACHED_PORT: "Port Memcached"
+ MEMCACHED_PORT_HELP: "Le port du serveur Memcached"
+ REDIS_SERVER: "Serveur Redis"
+ REDIS_SERVER_HELP: "L'adresse du serveur Redis"
+ REDIS_PORT: "Port Redis"
+ REDIS_PORT_HELP: "Le port du serveur Redis"
+ REDIS_PASSWORD: "mot de passe/secret Redis"
+ ALL: "Tous"
+ FROM: "de"
+ TO: "à"
+ RELEASE_DATE: "Date de sortie"
+ SORT_BY: "Trier par"
+ RESOURCE_FILTER: "Filtre..."
+ FORCE_SSL: "Forcer SSL"
+ FORCE_SSL_HELP: "Forcer SSL globalement. Si activé, lorsque le site est accessible via HTTP, Grav envoie une redirection vers la page HTTPS."
+ NEWS_FEED: "Fil d'actualité"
+ EXTERNAL_URL: "URL externe"
+ SESSION_PATH: "Le chemin d’accès de la session"
+ SESSION_PATH_HELP: "Utiliser uniquement si vous choisissez une URL de base personnalisée (réécriture du domaine de site / sous-dossier)"
+ CUSTOM_BASE_URL: "URL de base personnalisée"
+ CUSTOM_BASE_URL_HELP: "À utiliser si vous souhaitez réécrire le domaine du site ou utiliser un sous-dossier différent de celui utilisé par Grav. Par exemple : http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Impossible d’utiliser "%s" en dehors des pages.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Impossible de charger le fichier %s : %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Impossible de déplacer le fichier %s vers "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Annuler le chargement'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Êtes-vous sûr de vouloir annuler ce chargement ?'
+ DROPZONE_DEFAULT_MESSAGE: 'Déposez vos fichiers ici ou cliquez dans cette zone'
+ DROPZONE_FALLBACK_MESSAGE: 'Votre navigateur ne prend pas en charge le téléversement de fichier par glissé-déposé.'
+ DROPZONE_FALLBACK_TEXT: 'Veuillez utiliser le formulaire classique ci-dessous pour téléverser vos fichiers comme dans le passé.'
+ DROPZONE_FILE_TOO_BIG: 'Le fichier est trop lourd ({{filesize}} Mo). La taille maximale est de {{maxFilesize}} Mo.'
+ DROPZONE_INVALID_FILE_TYPE: "Vous ne pouvez pas télécharger des fichiers de ce type."
+ DROPZONE_MAX_FILES_EXCEEDED: "Vous ne pouvez plus téléverser de fichiers."
+ DROPZONE_REMOVE_FILE: "Supprimer le fichier"
+ DROPZONE_RESPONSE_ERROR: "Le serveur a répondu avec le code {{statusCode}}."
+ PREMIUM_PRODUCT: "Prémium"
+ ADMIN_CACHING: "Activer le cache d’administration"
+ ADMIN_CACHING_HELP: "La mise en cache dans l’administration peut être contrôlée indépendamment de celui du front-end."
+ DESTINATION_NOT_SPECIFIED: "Destination non spécifée"
+ UPLOAD_ERR_NO_TMP_DIR: "Il manque un dossier temporaire"
+ SESSION_SPLIT: "Session Split"
+ SESSION_SPLIT_HELP: "Division de sessions indépendantes entre le site et d’autres plugins (par exemple celui d'administration)"
+ ERROR_FULL_BACKTRACE: "Erreur complète Backtrace"
+ ERROR_SIMPLE: "Erreur simple"
+ ERROR_SYSTEM: "Erreur système"
+ IMAGES_AUTO_FIX_ORIENTATION: "Ajuster automatiquement l’orientation"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Ajuster automatiquement l’orientation de l’image en fonction des données Exif"
+ REDIS_SOCKET: "Connecteur Redis"
+ REDIS_SOCKET_HELP: "Le connecteur Redis"
+ NOT_SET: "Non défini"
+ PERMISSIONS: "Permissions"
+ NEVER_CACHE_TWIG: "Ne jamais mettre en cache Twig"
+ NEVER_CACHE_TWIG_HELP: "Systématiquement pour les pages : ne mettre en cache que le contenu et lancer Twig. Ignore le paramètre twig_first."
+ ALLOW_WEBSERVER_GZIP: "Autorisé Gzip WebServer"
+ ALLOW_WEBSERVER_GZIP_HELP: "Option désactivée par défaut. Si activée, la compression Gzip/Deflate configurée pour le serveur Web fonctionnera, mais la connexion http ne sera pas fermée avant l'événement onShutDown(), avec pour résultat un chargement de page plus lent"
+ OFFLINE_WARNING: "Impossible d’établir la connexion au Gestionnaire de Paquets Grav (GPM)"
+ CLEAR_IMAGES_BY_DEFAULT: "Vider le cache image par défaut"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Par défaut, les images traitées sont effacées pour chaque nettoyage du cache, ceci peut être désactivé"
+ CLI_COMPATIBILITY: "Compatibilité CLI"
+ CLI_COMPATIBILITY_HELP: "Vérifie que seuls les pilotes non-volatiles du cache sont utilisés (fichier, redis, memcache, etc.)"
+ REINSTALL_PLUGIN: "Réinstaller le Plugin"
+ REINSTALL_THEME: "Réinstaller le thème"
+ REINSTALL_THE: "Réinstaller le %s"
+ CONFIRM_REINSTALL: "Êtes-vous certain de vouloir réinstaller ce %s?"
+ REINSTALLED_SUCCESSFULLY: "%s réinstallé avec succès"
+ ERROR_REINSTALLING_THE: "Erreur lors de la réinstallation de %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Le package %s a été réinstallé avec succès"
+ REINSTALLATION_FAILED: "Échec de la réinstallation"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "La version installée actuellement n'est pas la plus récente. En cliquant sur continuer, vous supprimerez la version actuelle et installerez la dernière version disponible"
+ TOOLS: "Outils"
+ DIRECT_INSTALL: "Installation directe"
+ NO_PACKAGE_NAME: "Nom du package non spécifié"
+ PACKAGE_EXTRACTION_FAILED: "Echec de l'extraction du package"
+ NOT_VALID_GRAV_PACKAGE: "Package Grav invalide"
+ NAME_COULD_NOT_BE_DETERMINED: "Le nom n’a pas pu être déterminé"
+ CANNOT_OVERWRITE_SYMLINKS: "Impossible d'écraser les symlinks"
+ ZIP_PACKAGE_NOT_FOUND: "Archive ZIP du package introuvable"
+ GPM_OFFICIAL_ONLY: "Uniquement GPM officiel"
+ GPM_OFFICIAL_ONLY_HELP: "N'autoriser l'installation directe que depuis le dépôt GPM officiel."
+ NO_CHILD_TYPE: "Aucun type d’enfant pour cette rawroute"
+ SORTABLE_PAGES: "Pages triables:"
+ UNSORTABLE_PAGES: "Pages non triables"
+ ADMIN_SPECIFIC_OVERRIDES: "Exceptions relatives à l'admin"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Ordre d'affichage des enfants"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "L'ordre dans lequel les enfants de cette page doivent être affichés dans la vue 'Pages' du plugin Admin"
+ PWD_PLACEHOLDER: "chaîne complexe longue d'au moins 8 caractères"
+ PWD_REGEX: "Règles d'exclusion du mdp"
+ PWD_REGEX_HELP: "Par défaut : le mot de passe doit contenir au moins un nombre et une majuscule/minuscule, et au moins 8 caractères"
+ USERNAME_PLACEHOLDER: "minuscules seulement, ex. 'admin'"
+ USERNAME_REGEX: "Règles d'exclusion du pseudo"
+ USERNAME_REGEX_HELP: "Par défaut : uniquement minuscules, chiffres, tirets et underscores. Longueur : 3 - 16"
+ CONTENT_PADDING: "Bordure du contenu"
+ CONTENT_PADDING_HELP: "Activer/désactiver la bordure autour de la zone de contenu pour laisser plus d'espace"
+ ENABLE_AUTO_METADATA: "Metadonnées automatiques par Exif"
+ ENABLE_AUTO_METADATA_HELP: "Générer automatiquement des métadonnées pour les images avec les informations exif"
+ 2FA_TITLE: "Authentification à deux facteurs"
+ 2FA_INSTRUCTIONS: "##### Authentification à deux facteurs\nL'**authentification à deux facteurs** est activée sur ce compte. Veuillez utiliser l'application **A2F** pour entrer le **code à 6 chiffres** actuel afin de terminer le processus de connexion."
+ 2FA_REGEN_HINT: "Si vous regénérez la clef d'authentification, vous devrez mettre à jour la configuration de votre application d'authentification en deux étapes"
+ 2FA_LABEL: "Accès administrateur"
+ 2FA_FAILED: "Code d'authentification 2-Factor invalide, veuillez réessayer..."
+ 2FA_ENABLED: "A2F activée"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "Clef d'authentification pour l'application A2F"
+ 2FA_SECRET_HELP: "Scannez ce QR Code dans votre [application d'authentification à deux étapes](https://learn.getgrav.org/admin-panel/2fa#apps). Aussi, il serait une bonne idée de sauvegarder la clef de configuration en lieu sûr, dans le cas où votre application serait réinitialisée. Consultez la [documentation de Grav](https://learn.getgrav.org/admin-panel/2fa) pour plus d'informations "
+ 2FA_REGENERATE: "Régénérer"
+ FORCE_LOWERCASE_URLS: "Forcer les URL en minuscule"
+ FORCE_LOWERCASE_URLS_HELP: "Par défaut, Grav s'assurera que tous les slugs et les URLs seront en minuscules. En désactivant cette option, des slugs et URLs en majuscules pourront être utilisées"
+ INTL_ENABLED: "Intégration du module Intl"
+ INTL_ENABLED_HELP: "Utiliser le module PHP Intl et collate pour trier les collections enregistrées en UTF-8"
+ VIEW_SITE_TIP: "Voir le site"
+ TOOLS_DIRECT_INSTALL_TITLE: "Installation directe de paquets Grav"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Installer un paquet en téléversant une archive ZIP"
+ TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Vous pouvez facilement installer un plugin ou un thème valide, ou même une mise à jour de Grav lui-même sous la forme d'un paquet compressé en ZIP, via cette méthode. Ce paquet n'a pas à être enregistré via GPM, ce qui vous permet de facilement revenir à une version antérieure d'un paquet, ou installer une version de tests."
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Installer un paquet depuis une adresse distante"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Alternativement, vous pouvez également référencer une URL complète vers l'archive ZIP du paquet, afin que Grav l'installe en téléchargeant le fichier depuis cette URL."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Télécharger et installer"
+ ROUTE_OVERRIDES: "Surcharge de la route"
+ ROUTE_DEFAULT: "Route par défaut"
+ ROUTE_CANONICAL: "Route canonique"
+ ROUTE_ALIASES: "Alias de la route"
+ OPEN_NEW_TAB: "Ouvrir dans un nouvel onglet"
+ PAGEMEDIA_RESIZER: "> Les paramètres suivants s'appliquent au images téléchargées par le biais des pages média. Redimensionner Largeur / Hauteur redimensionnera automatiquement et proportionnellement une image si elle dépasse les limites définies dans les entrées. Les valeurs minimales et maximales de résolution définissent les plages de taille des images téléchargées. Définissez les champs à 0 pour éviter toute manipulation."
+ SESSION_INITIALIZE: "Initialiser la Session"
+ SESSION_INITIALIZE_HELP: "Fait démarrer une session à Grav. Cette fonction est nécessaire pour faire fonctionner toute interaction de l'utilisateur, comme la connexion, les formulaires, etc. Le plugin Admin n'est pas affecté par ce paramètre."
+ STRICT_YAML_COMPAT: "Compatibilité YAML"
+ STRICT_YAML_COMPAT_HELP: "Retourne à l'analyseur Symfony 2.4 YAML si l'analyseur Natif ou 3.4 échoue"
+ STRICT_TWIG_COMPAT: "Compatibilité Twig"
+ STRICT_TWIG_COMPAT_HELP: "Permet le réglage obsolète de l'échappement automatique Twig. Lorsqu'il est désactivé, le filtre |brut est nécessaire pour sortir du HTML car Twig va automatiquement sortir de l'échappement."
+ SCHEDULER: "Planificateur"
+ SCHEDULER_INSTALL_INSTRUCTIONS: "Instructions d'installation"
+ SCHEDULER_INSTALLED_READY: "Installé et prêt"
+ SCHEDULER_CRON_NA: "Cron Non Disponible"
+ SCHEDULER_NOT_ENABLED: "Non Actif"
+ SCHEDULER_SETUP: "Configuration du planificateur"
+ SCHEDULER_INSTRUCTIONS: "Le Planificateur Grav vous permet de créer et de planifier des travaux personnalisés. Il fournit également une méthode permettant aux plugins Grav d'intégrer de manière programmatique et dynamique des tâches à exécuter périodiquement."
+ SCHEDULER_POST_INSTRUCTIONS: "Pour activer la fonctionnalité du planificateur, vous devez ajouter le Planificateur Grav au fichier crontab de votre système. Lancez la commande ci-dessus depuis le terminal pour l'ajouter automatiquement. Une fois sauvegardée, actualisez cette page pour voir l'état Prêt."
+ SCHEDULER_JOBS: "Tâches du planificateur personnalisées"
+ SCHEDULER_STATUS: "Status du planificateur"
+ SCHEDULER_RUNAT: "Exécuter à"
+ SCHEDULER_RUNAT_HELP: "Syntaxe formatée 'at'"
+ SCHEDULER_OUTPUT: "Fichier de sortie"
+ SCHEDULER_OUTPUT_HELP: "Le chemin/nom du fichier de sortie (à partir de la racine de l'installation Grav)"
+ SCHEDULER_OUTPUT_TYPE: "Type de sortie"
+ SCHEDULER_OUTPUT_TYPE_HELP: "Ajouter chaque exécution au fichier, ou écraser le fichier à chaque exécution"
+ SCHEDULER_EMAIL: "Email"
+ SCHEDULER_EMAIL_HELP: "Destinataire du fichier de sortie. Nécessite que le fichier de sortie soit défini"
+ SECURITY: "Sécurité"
+ XSS_SECURITY: "Sécurité XSS pour le Contenu"
+ XSS_WHITELIST_PERMISSIONS: "Permissions pour Liste blanche"
+ XSS_WHITELIST_PERMISSIONS_HELP: "Les Utilisateurs avec ces permissions ignoreront les règles XSS lors de l'enregistrement de contenu"
+ XSS_ON_EVENTS: "Filtrer les événements"
+ XSS_INVALID_PROTOCOLS: "Filtrer les protocoles invalides"
+ XSS_INVALID_PROTOCOLS_LIST: "Liste de protocoles invalides"
+ XSS_MOZ_BINDINGS: "Filtrer les liaisons Moz"
+ XSS_HTML_INLINE_STYLES: "Filtrer les styles HTML en ligne"
+ XSS_DANGEROUS_TAGS: "Filtrer les balises HTML dangereuses"
+ XSS_DANGEROUS_TAGS_LIST: "Liste des balises HTML dangereuses"
+ XSS_ONSAVE_ISSUE: "Sauvegarde échouée: problème XSS détecté..."
+ XSS_ISSUE: "NOTICE: Grav a trouvé des problèmes potentiels d'XSS dans %s"
+ UPLOADS_SECURITY: "Téléchargements de sécurité"
+ UPLOADS_DANGEROUS_EXTENSIONS: "Extensions dangereuses"
+ UPLOADS_DANGEROUS_EXTENSIONS_HELP: "Empêcher ces extensions d'être téléchargées peu importe les types MIME acceptés"
+ REPORTS: "Raports"
+ LOGS: "Journaux"
+ LOG_VIEWER_FILES: "Visionneuse de fichiers journaux"
+ LOG_VIEWER_FILES_HELP: "Fichiers dans /logs/ qui seront disponibles pour visualiser dans Outils - Journaux ex. 'grav' = /logs/grav.log"
+ BACKUPS_STORAGE_PURGE_TRIGGER: "Déclenchement de purge des sauvegardes"
+ BACKUPS_MAX_COUNT: "Nombre maximum de sauvegardes"
+ BACKUPS_MAX_COUNT_HELP: "0 pour illimité"
+ BACKUPS_MAX_SPACE: "Espace de sauvegarde maximum"
+ BACKUPS_MAX_RETENTION_TIME: "Durée de conservation maximum"
+ BACKUPS_MAX_RETENTION_TIME_APPEND: "en jours"
+ BACKUPS_PROFILE_NAME: "Nom de la sauvegarde"
+ BACKUPS_PROFILE_ROOT_FOLDER: "Dossier racine"
+ BACKUPS_PROFILE_ROOT_FOLDER_HELP: "Cela peut être un chemin absolu ou un flux"
+ BACKUPS_PROFILE_EXCLUDE_PATHS: "Exclure les chemins"
+ BACKUPS_PROFILE_EXCLUDE_PATHS_HELP: "Chemins absolus à exclure, un par ligne"
+ BACKUPS_PROFILE_EXCLUDE_FILES: "Exclure les fichiers"
+ BACKUPS_PROFILE_EXCLUDE_FILES_HELP: "Fichiers ou dossiers spécifiques à exclure, un par ligne"
+ BACKUPS_PROFILE_SCHEDULE: "Activer la planification"
+ BACKUPS_PROFILE_SCHEDULE_AT: "Exécuter la planification"
+ COMMAND: "Commande"
+ EXTRA_ARGUMENTS: "Arguments supplémentaires"
diff --git a/user/plugins/admin/languages/he.yaml b/user/plugins/admin/languages/he.yaml
new file mode 100644
index 0000000..42a8c1d
--- /dev/null
+++ b/user/plugins/admin/languages/he.yaml
@@ -0,0 +1,418 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "זוהי מהדורת ביתא! השימוש על אחריותכם בלבד..."
+ ADMIN_REPORT_ISSUE: "GitHub נמצאה בעיה? נא לדווח עליה דרך"
+ EMAIL_FOOTER: "אתר זה מופעל על ידי גראב -מערכת ניהול בקובץ שטוח מודרני"
+ LOGIN_BTN: "התחברות"
+ LOGIN_BTN_FORGOT: "שכחת"
+ LOGIN_BTN_RESET: "איפוס סיסמה"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "שליחת הוראות לאיפוס"
+ LOGIN_BTN_CLEAR: "נקוי טופס"
+ LOGIN_BTN_CREATE_USER: "יצירת משתמש חדש"
+ LOGIN_LOGGED_IN: "הצלחת להתחבר"
+ LOGIN_FAILED: "התחברות נכשלה"
+ LOGGED_OUT: "התנתקת מהמערכת"
+ RESET_NEW_PASSWORD: "יש לחבר סיסמה חדשה …"
+ RESET_LINK_EXPIRED: "פג תוקף קישור האיפוס, יש לנסות שוב"
+ RESET_PASSWORD_RESET: "הסיסמא אופסה בהצלחה"
+ RESET_INVALID_LINK: "קישור לאיפוס לא חוקי, יש לנסות שוב"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "ההוראות לאיפוס הסיסמא נשלחו למייל שלך"
+ FORGOT_FAILED_TO_EMAIL: "נכשלה שליחת ההוראות לאיפוס, נא לנסות מאוחר יותר"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "אין אפשרות לאפס את הסיסמה עבור %s, כתובת המייל אינה רשומה"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "שם משתמש %s אינו קיים"
+ FORGOT_EMAIL_NOT_CONFIGURED: "אין אפשרות לאפס את הסיסמה. אתר זה אינו מוגדר לשלוח מיילים"
+ FORGOT_EMAIL_SUBJECT: "%s - בקשה לאיפוס סיסמה"
+ FORGOT_EMAIL_BODY: "
Alternativno, kopiraj sljedeći link u svoj web preglednik:
%2$s
Lijep pozdrav,
%3$s
"
+ MANAGE_PAGES: "Upravljanje stranicama"
+ CONFIGURATION: "Konfiguracija"
+ PAGES: "Stranice"
+ PLUGINS: "Dodaci"
+ PLUGIN: "Dodatak (Plugin)"
+ THEMES: "Teme"
+ LOGOUT: "Odjava"
+ BACK: "Natrag"
+ NEXT: "Sljedeći"
+ PREVIOUS: "Prethodni"
+ ADD_PAGE: "Dodaj Stranicu"
+ ADD_MODULAR: "Dodaj Modular"
+ MOVE: "Makni"
+ DELETE: "Obriši"
+ VIEW: "Prikaz"
+ SAVE: "Sačuvaj"
+ NORMAL: "Normalna"
+ EXPERT: "Stručna"
+ EXPAND_ALL: "Proširi sve"
+ COLLAPSE_ALL: "Skupi sve"
+ ERROR: "Greška"
+ CLOSE: "Zatvori"
+ CANCEL: "Otkaži"
+ CONTINUE: "Nastavi"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Potrebna je potvrda"
+ MODAL_CHANGED_DETECTED_TITLE: "Detektirane Izmjene"
+ MODAL_CHANGED_DETECTED_DESC: "Imaš nesačuvane izmjene. Jesi li siguran da želiš otići bez da ih sačuvaš?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Potvrda tražena"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Jesi li siguran da želiš obrisati ovaj fajl? Ova akcija ne može biti poništena."
+ ADD_FILTERS: "Dodaj Filtere"
+ SEARCH_PAGES: "Pretraži Stranice"
+ VERSION: "Verzija"
+ WAS_MADE_WITH: "je stvorena sa"
+ BY: "Od"
+ UPDATE_THEME: "Obnovi Temu"
+ UPDATE_PLUGIN: "Obnovi Dodatak"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "ove teme je sada dostupna"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "ovog dodatka je sada dostupna"
+ AUTHOR: "Autor"
+ HOMEPAGE: "Stranica"
+ DEMO: "Demo"
+ BUG_TRACKER: "Bug Tracker"
+ KEYWORDS: "Ključne riječi"
+ LICENSE: "Licenca"
+ DESCRIPTION: "Opis"
+ README: "Pročitaj me"
+ REMOVE_THEME: "Makni Temu"
+ INSTALL_THEME: "Instaliraj Temu"
+ THEME: "Tema"
+ BACK_TO_THEMES: "Povratak na Teme"
+ BACK_TO_PLUGINS: "Natrag na Dodatke"
+ CHECK_FOR_UPDATES: "Provjeri postoje li obnove"
+ ADD: "Dodaj"
+ CLEAR_CACHE: "Očisti Cache"
+ CLEAR_CACHE_ALL_CACHE: "Sav Cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Samo Assets"
+ CLEAR_CACHE_IMAGES_ONLY: "Samo Slike"
+ CLEAR_CACHE_CACHE_ONLY: "Samo Cache"
+ CLEAR_CACHE_TMP_ONLY: "Samo Tmp"
+ DASHBOARD: "Upravljačka ploča"
+ UPDATES_AVAILABLE: "Dostupna su ažuriranja"
+ DAYS: "Dana"
+ UPDATE: "Ažuriraj"
+ BACKUP: "Backup"
+ BACKUPS: "Sigurnosne kopije"
+ BACKUP_NOW: "Stvori sigurnosnu kopiju"
+ BACKUPS_PROFILES_COUNT: "Broj profila"
+ BACKUPS_TOTAL_SIZE: "Iskorišten prostor"
+ BACKUPS_NEWEST: "Najnovija sigurnosna kopija"
+ BACKUPS_OLDEST: "Najstarija sigurnosna kopija"
+ BACKUP_DELETED: "Sigurnosna kopija uspješno je obrisana"
+ BACKUP_NOT_FOUND: "Sigurnosna kopija nije nađena"
+ BACKUP_DATE: "Datum sigurnosne kopije"
+ STATISTICS: "Statistike"
+ TODAY: "Danas"
+ WEEK: "Tjedan"
+ MONTH: "Mjesec"
+ LATEST_PAGE_UPDATES: "Zadnje Obnovljene Stranice"
+ MAINTENANCE: "Održavanje"
+ UPDATED: "Obnovljeno"
+ MON: "Pon"
+ TUE: "Uto"
+ WED: "Sri"
+ THU: "Čet"
+ FRI: "Pet"
+ SAT: "Sub"
+ SUN: "Ned"
+ COPY: "Kopiraj"
+ EDIT: "Editiraj"
+ CREATE: "Kreiraj"
+ GRAV_ADMIN: "Grav administracija"
+ GRAV_OFFICIAL_PLUGIN: "Službeni Grav Dodatak"
+ GRAV_OFFICIAL_THEME: "Grav Službena Tema"
+ PLUGIN_SYMBOLICALLY_LINKED: "Ovaj dodatak je linkan simbolično. Obnove neće biti detektirane."
+ THEME_SYMBOLICALLY_LINKED: "Ova tema je linkana simbolično. Obnove neće biti detektirane."
+ REMOVE_PLUGIN: "Ukloni Dodatak"
+ INSTALL_PLUGIN: "Instaliraj Dodatak"
+ AVAILABLE: "Dostupno"
+ INSTALLED: "Instalirano"
+ INSTALL: "Instaliraj"
+ ACTIVE_THEME: "Aktivna Tema"
+ SWITCHING_TO: "Mijenjam na"
+ SWITCHING_TO_DESCRIPTION: "Prebacivanjem na drugu temu, ne postoji garancija da će sve stranice biti podržane, moguće su potencijalne greške pri učitavanju stranica."
+ SWITCHING_TO_CONFIRMATION: "Želiš li nastaviti i primijeniti temu"
+ CREATE_NEW_USER: "Stvori Novog Korisnika"
+ REMOVE_USER: "Makni Korisnika"
+ ACCESS_DENIED: "Pristup odbijen"
+ ACCOUNT_NOT_ADMIN: "tvoj račun nema ovlasti administratora"
+ PHP_INFO: "PHP info"
+ INSTALLER: "Instalacijski program"
+ AVAILABLE_THEMES: "Dostupne Teme"
+ AVAILABLE_PLUGINS: "Dostupni Dodaci"
+ INSTALLED_THEMES: "Instalirane Teme"
+ INSTALLED_PLUGINS: "Instalirani Dodaci"
+ BROWSE_ERROR_LOGS: "Pregledaj Dnevnike Pogrešaka"
+ SITE: "Web stranica"
+ INFO: "Informacije"
+ SYSTEM: "Sustav"
+ USER: "Korisnik"
+ ADD_ACCOUNT: "Dodaj Račun"
+ SWITCH_LANGUAGE: "Promijeni Jezik"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Uspješno omogućen dodatak"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Uspješno onemogućen dodatak"
+ SUCCESSFULLY_CHANGED_THEME: "Zadana tema je uspješno promijenjena"
+ INSTALLATION_FAILED: "Instalacija nije uspjela"
+ INSTALLATION_SUCCESSFUL: "Instalacija je uspjela"
+ UNINSTALL_FAILED: "Deinstalacija nije uspjela"
+ UNINSTALL_SUCCESSFUL: "Deinstalacija je uspjela"
+ SUCCESSFULLY_SAVED: "Uspješno sačuvano"
+ SUCCESSFULLY_COPIED: "Uspješno kopirano"
+ REORDERING_WAS_SUCCESSFUL: "Reordering je uspješan"
+ SUCCESSFULLY_DELETED: "Uspješno obrisano"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Jezik je uspješno promijenjen."
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Nemaš dovoljno ovlasti za izvršavanje tog zadatka."
+ CACHE_CLEARED: "Cache očišćen"
+ METHOD: "Metoda"
+ ERROR_CLEARING_CACHE: "Greška u čišćenju cachea"
+ AN_ERROR_OCCURRED: "Dogodila se greška"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Sigurnosna kopija je spremna za preuzimanje"
+ DOWNLOAD_BACKUP: "Preuzmi sigurnosnu kopiju"
+ PAGES_FILTERED: "Filtrirane Stranice"
+ NO_PAGE_FOUND: "Stranica nije nađena"
+ INVALID_PARAMETERS: "Nevaljani Parameteri"
+ NO_FILES_SENT: "Fajlovi nisu poslani"
+ EXCEEDED_FILESIZE_LIMIT: "Premašeno je PHP-om konfigurirano ograničenje veličine datoteke"
+ UNKNOWN_ERRORS: "Nepoznate greške"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Premašeno je PHP-om konfigurirano ograničenje veličine datoteke"
+ UNSUPPORTED_FILE_TYPE: "Nepodržan tip fajla"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Pogreška u premještaju uplodane datoteke."
+ FILE_UPLOADED_SUCCESSFULLY: "Fajl je uspješno uploadan"
+ FILE_DELETED: "Fajl obrisan"
+ FILE_COULD_NOT_BE_DELETED: "Fajl nije mogao biti obrisan"
+ FILE_NOT_FOUND: "Fajl nije nađen"
+ NO_FILE_FOUND: "Nije nađen fajl"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav je uspješno obnovljen"
+ GRAV_UPDATE_FAILED: "Obnova Grava nije uspjela"
+ EVERYTHING_UPDATED: "Sve je obnovljeno"
+ UPDATES_FAILED: "Obnove nisu uspjele"
+ AVATAR_BY: "Avatar sa"
+ AVATAR_UPLOAD_OWN: "Ili pošaljite svoj vlastiti..."
+ LAST_BACKUP: "Posljednja sigurnosna kopija"
+ FULL_NAME: "Puno ime"
+ USERNAME: "Korisničko ime"
+ EMAIL: "e-pošta"
+ USERNAME_EMAIL: "Korisničko ime ili E-mail"
+ PASSWORD: "Lozinka"
+ PASSWORD_CONFIRM: "Potvrdi Lozinku"
+ TITLE: "Naslov"
+ LANGUAGE: "Jezik"
+ ACCOUNT: "Račun"
+ EMAIL_VALIDATION_MESSAGE: "Email adresa mora biti valjana."
+ PASSWORD_VALIDATION_MESSAGE: "Lozinka mora sadržavati bar jedan broj i jedno veliko i malo slovo, i barem 8 ili više znakova."
+ LANGUAGE_HELP: "Postavi omiljeni jezik"
+ MEDIA: "Medijske datoteke"
+ DEFAULTS: "Osnovno"
+ SITE_TITLE: "Ime Stranice"
+ SITE_TITLE_PLACEHOLDER: "Pretpostavljen naslov stranice"
+ SITE_TITLE_HELP: "Zadano ime tvoje stranice, često korišteno u temama"
+ SITE_DEFAULT_LANG: "Zadani jezik"
+ DEFAULT_AUTHOR: "Zadani Autor"
+ DEFAULT_AUTHOR_HELP: "Ime zadanog autora, često korišteno u temama ili sadržaju stranice"
+ DEFAULT_EMAIL: "Email"
+ DEFAULT_EMAIL_HELP: "Zadani email to reference u temama ili stranicama"
+ TAXONOMY_TYPES: "Tipovi Taxonomije"
+ TAXONOMY_TYPES_HELP: "Tipovi Taxonomije moraju biti definirani ovdje, ako ih želiš koristiti u stranicama"
+ PAGE_SUMMARY: "Sažetak Stranice"
+ ENABLED: "Omogućen"
+ ENABLED_HELP: "Omogući sažetak stranice (the summary returns the same as the page content)"
+ 'YES': "Da"
+ 'NO': "Ne"
+ SUMMARY_SIZE: "Veličina Sažetka"
+ SUMMARY_SIZE_HELP: "Broj znakova sa stranice koji će se koristiti u sažetku sadržaja"
+ FORMAT: "Format"
+ FORMAT_HELP: "short = use the first occurrence of delimiter ili size; long = summary delimiter će biti ignoriran"
+ SHORT: "Kratko"
+ LONG: "Dugo"
+ DELIMITER: "Graničnik"
+ DELIMITER_HELP: "Delimiter sažetka (default '===')"
+ METADATA: "Metapodaci"
+ METADATA_HELP: "Zadane metadata vrijednosti koje će biti prikazane na svakoj stranici, osim ako je overridden by the page"
+ NAME: "Ime"
+ CONTENT: "Sadržaj"
+ SIZE: "Veličina"
+ ACTION: "Radnja"
+ REDIRECTS_AND_ROUTES: "Preusmjeravanja i rute"
+ CUSTOM_REDIRECTS: "Prilagođena preusmjeravanja"
+ CUSTOM_REDIRECTS_HELP: "rute za preusmjeravanje na druge stranice. Standardne Regex zamjene vrijede"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/ vaš/nadimak"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/ vaša/preusmjeravanja"
+ CUSTOM_ROUTES: "Vlastite rute"
+ CUSTOM_ROUTES_HELP: "rute za preusmjeravanje na druge stranice. Standardne Regex zamjene vrijede"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/ vaš/nadimak"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/ vaše/rute"
+ FILE_STREAMS: "File Streams"
+ DEFAULT: "Zadano"
+ PAGE_MEDIA: "Stranica medija"
+ OPTIONS: "Opcije"
+ PUBLISHED: "Objavljeno"
+ PUBLISHED_HELP: "Stranica je defaultno objavljena, osim ako izričito postaviš objavljeno: false ili via a publish_date being in the future, or unpublish_date in the past"
+ DATE: "Datum"
+ DATE_HELP: "Varijabla datuma omogućuje ti da specifično postaviš datum asociran sa ovom stranicom."
+ PUBLISHED_DATE: "Datum Objave"
+ PUBLISHED_DATE_HELP: "Can provide datum to automatically trigger publication."
+ UNPUBLISHED_DATE: "Datum povlačenja objave"
+ ROBOTS: "Roboti"
+ TAXONOMIES: "Taxonomije"
+ TAXONOMY: "Taxonomija"
+ ADVANCED: "Napredno"
+ SETTINGS: "Postavke"
+ FOLDER_NUMERIC_PREFIX: "Numerički Prefix Foldera"
+ FOLDER_NUMERIC_PREFIX_HELP: "Numerički prefix koji pruža manualni poredak i implicira vidljivost"
+ FOLDER_NAME: "Ime Foldera"
+ FOLDER_NAME_HELP: "Ime foldera koji će biti spremljen u filesystem za ovu stranicu"
+ PARENT: "Nadređena kategorija"
+ DEFAULT_OPTION_ROOT: "- Root -"
+ DEFAULT_OPTION_SELECT: "- Odaberi -"
+ DISPLAY_TEMPLATE: "Predložak prikaza"
+ DISPLAY_TEMPLATE_HELP: "Tip stranice koja određuje koji Twig predložak generira stranicu"
+ BODY_CLASSES: "Body Klase"
+ ORDERING: "Poredak"
+ PAGE_ORDER: "Redoslijed stranica"
+ OVERRIDES: "Zaobilaženja"
+ MENU: "Meni"
+ MENU_HELP: "String koji će biti korišten u meniu. Ako nije postavljeno, biti će korišten Title."
+ SLUG: "Slug"
+ SLUG_HELP: "Slug varijabla ti omogućuje da specifično set the page's portion of the URL"
+ SLUG_VALIDATE_MESSAGE: "Slug mora sadržavati samo mala slova, brojeve i crtice"
+ PROCESS: "Proces"
+ PROCESS_HELP: "Kontroliraj kako su stranice procesirane. Can be set per-page rather than globally"
+ DEFAULT_CHILD_TYPE: "Predpostavljena pod stranica"
+ USE_GLOBAL: "Koristi Globalno"
+ ROUTABLE: "Rutabilno"
+ ROUTABLE_HELP: "Ako je ova stranica reachable by a URL"
+ CACHING: "Predmemoriranje [Cache]"
+ VISIBLE: "Vidljivost"
+ VISIBLE_HELP: "Određuje da li je stranica vidljiva u navigaciji."
+ DISABLED: "Onemogućen"
+ ITEMS: "Stavke"
+ ORDER_BY: "Poredaj po"
+ ORDER: "Poredak"
+ FOLDER: "Folder"
+ ASCENDING: "Uzlazni"
+ DESCENDING: "Silazni"
+ ADD_MODULAR_CONTENT: "Dodaj Modularni Sadržaj"
+ PAGE_TITLE: "Ime Stranice"
+ PAGE_TITLE_HELP: "Naslov stranice"
+ PAGE: "Stranica"
+ MODULAR_TEMPLATE: "Modularni predložak"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Ime fajla"
+ PARENT_PAGE: "Glavna Stranica"
+ HOME_PAGE: "Naslovnica"
+ HOME_PAGE_HELP: "Stranica koju će Grav koristiti kao zadanu landing stranicu"
+ DEFAULT_THEME: "Zadana tema"
+ DEFAULT_THEME_HELP: "Postavi temu koju će Grav koristiti kao zadanu (zadana je Antimatter)"
+ TIMEZONE: "Vremenska zona"
+ TIMEZONE_HELP: "Zaobiđi pretpostavljenu vremensku zonu poslužitelja"
+ SHORT_DATE_FORMAT: "Kratak prikaz formata datuma"
+ SHORT_DATE_FORMAT_HELP: "Postavi kratki format datuma koji može biti korišten u temama"
+ LONG_DATE_FORMAT: "Dug prikaz formata datuma"
+ LONG_DATE_FORMAT_HELP: "Postavi dugi format datuma koji može biti korišten u temama"
+ DEFAULT_ORDERING: "Defaultni poredak"
+ DEFAULT_ORDERING_HELP: "Stranice na listi će render koristeći ovaj poredak osim ako je overridden"
+ DEFAULT_ORDERING_DEFAULT: "Defaultni - baziran na imenu fajla"
+ DEFAULT_ORDERING_FOLDER: "Folder - baziran na imenu foldera bez prefixa"
+ DEFAULT_ORDERING_TITLE: "Imenu - baziran na polju imena u headeru"
+ DEFAULT_ORDERING_DATE: "Datum - baziran na polju datuma u headeru"
+ DEFAULT_ORDER_DIRECTION: "Zadani smjer redosljeda"
+ DEFAULT_ORDER_DIRECTION_HELP: "Poredak stranica na listi"
+ DEFAULT_PAGE_COUNT: "Defaultni broj stranica"
+ DEFAULT_PAGE_COUNT_HELP: "Defaultni maximum broja stranica na listi"
+ DATE_BASED_PUBLISHING: "Objavljivanje bazirano na datumu"
+ DATE_BASED_PUBLISHING_HELP: "Automatski objavi ili povuci objave postova baziranih prema njihovom datumu"
+ EVENTS: "Događaji"
+ EVENTS_HELP: "Omogući ili onemogući specifične događaje. Onemogućavanje ovih može potrgati dodatke"
+ REDIRECT_DEFAULT_ROUTE: "Preusmjeravanje pretpostavljene rute"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Automatski redirect to a page's default route"
+ LANGUAGES: "Jezici"
+ SUPPORTED: "Omogućeno"
+ SUPPORTED_HELP: "Zarezom odijeljena lista dvoslovnih jezičnih kodova (na primjer 'en,fr,hr')"
+ TRANSLATIONS_ENABLED: "Prijevodi su omogućeni"
+ TRANSLATIONS_ENABLED_HELP: "Omogući prijevode u Gravu, dodatke i extenzije"
+ TRANSLATIONS_FALLBACK: "Osnovni prijevod"
+ TRANSLATIONS_FALLBACK_HELP: "Fallback kroz podržane prijevode, ako aktivni jezik ne postoji"
+ ACTIVE_LANGUAGE_IN_SESSION: "Aktivni jezik u prijavi"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Sačuvaj aktivni jezik u prijavi"
+ HTTP_HEADERS: "HTTP Headeri"
+ EXPIRES: "Istječe"
+ EXPIRES_HELP: "Sets the expires header. Vrijednost je u sekundama."
+ LAST_MODIFIED: "Zadnji put izmijenjeno"
+ LAST_MODIFIED_HELP: "Sets the last modified header koji može pomoći optimizirati proxy i caching web preglednika"
+ ETAG: "ETag"
+ ETAG_HELP: "Postavljanje e-oznake u zaglavlje da bi se otkrile promjene na stranici"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Sets the `Vary: Accept Encoding` header to help sa proxy i CDN caching"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA_HELP: "Omogući defaultnu potporu za Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ AUTO_LINE_BREAKS: "Automatsko lomljenje linija"
+ AUTO_LINE_BREAKS_HELP: "Omogući podršku za automatsko lomljenje linija u markdownu"
+ AUTO_URL_LINKS: "Auto URL linkovi"
+ AUTO_URL_LINKS_HELP: "Omogući automatsku konverziju URLova u HTML hyperlinkove"
+ ESCAPE_MARKUP: "Escape markup"
+ ESCAPE_MARKUP_HELP: "Escape markup tags u HTML entities"
+ CACHING_HELP: "Globalni ON/OFF prekidač za uključivanje/isključivanje Grav cache-a"
+ CACHE_CHECK_METHOD: "Cache check metoda"
+ CACHE_CHECK_METHOD_HELP: "Odaberi metodu koju će Grav koristiti da provjeri jesu li fajlovi stranice bili modificirani."
+ CACHE_DRIVER: "Cache driver"
+ CACHE_DRIVER_HELP: "Odaberi koji cache driver će Grav koristiti. 'Auto Detektiraj' attempts to find the best for you"
+ CACHE_PREFIX: "Cache prefiks"
+ CACHE_PREFIX_HELP: "An identifier for part of the Grav key. Ne mijenjaj osim ako znaš što radiš."
+ CACHE_PREFIX_PLACEHOLDER: "Derivat osnovnog URL-a (premošćivo sa ubacivanjem nasumičnog retka)"
+ LIFETIME: "Trajanje"
+ LIFETIME_HELP: "Određuje cache lifetime u sekundama. 0 = beskonačno"
+ GZIP_COMPRESSION: "Gzip kompresija"
+ GZIP_COMPRESSION_HELP: "Omogući GZip kompresiju Grav stranice radi poboljšanja performansi."
+ TWIG_TEMPLATING: "Twig predložak"
+ TWIG_CACHING: "Twig caching"
+ TWIG_CACHING_HELP: "Kontroliraj Twig caching mehanizam. Ostavi ovo omogućeno za najbolju performansu."
+ TWIG_DEBUG: "Twig debug"
+ TWIG_DEBUG_HELP: "Dopušta opciju ne učitavanja Twig Debugger extenzije"
+ DETECT_CHANGES: "Detektiraj izmjene"
+ DETECT_CHANGES_HELP: "Twig će automatski recompilirati Twig cache ako detektira ikakve promjene u Twig templateima"
+ AUTOESCAPE_VARIABLES: "Autoescape varijable."
+ AUTOESCAPE_VARIABLES_HELP: "Autoescapes sve varijable. Ovo će najvjerojatnije potrgati tvoj sajt"
+ ASSETS: "Assets"
+ CSS_PIPELINE: "CSS pipeline"
+ CSS_PIPELINE_HELP: "CSS pipeline je ujedinjenje više CSS resursa u jedan fajl"
+ CSS_MINIFY: "CSS minificiraj"
+ CSS_MINIFY_HELP: "Minificiraj CSS tijekom pipelining"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "CSS minifikacija Windows premošćenje"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Minify Override for Windows platforms. False by default due to ThreadStackSize"
+ CSS_REWRITE: "CSS rewrite"
+ CSS_REWRITE_HELP: "Prepiši sve relativne CSS URL-ove tokom spajanja"
+ JAVASCRIPT_PIPELINE: "JavaScript pipeline"
+ JAVASCRIPT_PIPELINE_HELP: "JS pipeline je ujedinjenje više JS resursa u jedan fajl"
+ JAVASCRIPT_MINIFY: "Umanji JavaScript"
+ JAVASCRIPT_MINIFY_HELP: "Minificiraj JS tijekom spajanja"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Omogući timestamps on assets"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Omogući asset timestamps"
+ COLLECTIONS: "Kolekcije"
+ ERROR_HANDLER: "Rukovatelj greškama"
+ DISPLAY_ERRORS: "Prikaži greške"
+ DISPLAY_ERRORS_HELP: "Display full backtrace-style error page"
+ LOG_ERRORS: "Dnevnik grešaka"
+ LOG_ERRORS_HELP: "Log greške to /logs folder"
+ DEBUGGER: "Debuger"
+ DEBUGGER_HELP: "Omogući Grav debugger i following settings"
+ DEBUG_TWIG: "Debugiraj Twig"
+ DEBUG_TWIG_HELP: "Omogući debugging of Twig templatea"
+ SHUTDOWN_CLOSE_CONNECTION: "Ugasi prekinute veze"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Prekidanje veze prije zvanja onShutdown(). false u slučaju debuging-a"
+ DEFAULT_IMAGE_QUALITY: "Defaultna kvaliteta slika"
+ DEFAULT_IMAGE_QUALITY_HELP: "Predpostavljena kvaliteta slika korištena tokom resamplinga ili cachinga (85%)"
+ CACHE_ALL: "Cache sve slike"
+ CACHE_ALL_HELP: "Provuci sve slike kroz Grav-ov cache sistem čak iako nemaju nikakve medijske promjene"
+ IMAGES_DEBUG: "Image debug watermark"
+ IMAGES_DEBUG_HELP: "Prikaži sloj preko slike koji prikazuje dubinu piksela slike, npr. u slučaju rada sa retina zasonima"
+ UPLOAD_LIMIT: "Limit veličine uploadane datoteke"
+ UPLOAD_LIMIT_HELP: "Postavka maksimalne veličine uploada (0 je neograničeno)"
+ ENABLE_MEDIA_TIMESTAMP: "Omogući timestamps on media"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Dodaje vrijeme promijene na medijske datoteke"
+ SESSION: "Sesija"
+ SESSION_ENABLED_HELP: "Omogući session podršku unutar Grava"
+ TIMEOUT: "Timeout"
+ TIMEOUT_HELP: "Određuje trajanje prijave u sekundama"
+ SESSION_NAME_HELP: "An identifier korišten da bi se formiralo ime session kolačića"
+ ABSOLUTE_URLS: "Apsolutni URLovi"
+ ABSOLUTE_URLS_HELP: "Apsolutni ili relativni URLovi za `base_url`"
+ PARAMETER_SEPARATOR: "Separator Parametara"
+ PARAMETER_SEPARATOR_HELP: "Separator za passed parametre koji može biti promijenjen za Apache na Windowsima"
+ TASK_COMPLETED: "Zadatak izvršen"
+ EVERYTHING_UP_TO_DATE: "Sve je najnovije"
+ UPDATES_ARE_AVAILABLE: "obnove su dostupne"
+ IS_AVAILABLE_FOR_UPDATE: "je dostupna za obnavljanje"
+ IS_NOW_AVAILABLE: "je sada dostupna"
+ CURRENT: "Trenutna"
+ UPDATE_GRAV_NOW: "Obnovi Grav Sada"
+ GRAV_SYMBOLICALLY_LINKED: "Grav je simbolično linkan. Upgrade neće biti dostupan."
+ UPDATING_PLEASE_WAIT: "Obnavljanje... pričekaj malo, preuzimam"
+ OF_THIS: "ovog"
+ OF_YOUR: "tvog"
+ HAVE_AN_UPDATE_AVAILABLE: "ima dostupnu obnovu"
+ SAVE_AS: "Sačuvaj kao"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Jesi li siguran da želiš obrisati ovu stranicu i sve podstranice? Ako je stranica prevedena na druge jezike, ti prijevodi će biti ostavljeni i moraju biti obrisani posebno. U suprotnom folder stranice će biti obrisan zajedno sa svojim podstranicama. Ova akcija ne može biti poništena."
+ AND: "i"
+ UPDATE_AVAILABLE: "Obnova je dostupna"
+ METADATA_KEY: "Key (e.g. 'Ključne riječi')"
+ METADATA_VALUE: "Vrijednost (npr. 'Blog, Grav')"
+ USERNAME_HELP: "Korisničko ime bi trebalo biti između 3 i 16 znakova, uključujući mala slova, brojeve, underscores (_), i crtice. Velika slova, razmaci i posebni znakovi nisu dopušteni"
+ FULLY_UPDATED: "Potpuno Obnovljen"
+ SAVE_LOCATION: "Lokacija sačuvanog"
+ PAGE_FILE: "Template Stranice"
+ NO_USER_ACCOUNTS: "Nije nađen nijedan korisnički račun, stvori ga prvo..."
+ REDIRECT_TRAILING_SLASH: "Preusmjeri /"
+ REDIRECT_TRAILING_SLASH_HELP: "301 preusmjeravanje rađe nego transparentno rokovanje sa / URL-ovima."
+ DEFAULT_DATE_FORMAT: "Format datuma stranice"
+ DEFAULT_DATE_FORMAT_HELP: "Oblik datuma kojeg koristi Grav. Prema zadanim postavkama, Grav pokušava pogoditi format datuma, ali možete i specificirati format koristeći PHP sintaksu (npr.: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Pogodi automatski"
+ IGNORE_FILES: "Ignoriraj fajlove"
+ IGNORE_FILES_HELP: "Specifični fajlovi to ignore pri procesiranju stranica"
+ IGNORE_FOLDERS: "Ignoriraj foldere"
+ IGNORE_FOLDERS_HELP: "Specifični folderi koje treba ignorirati pri procesiranju stranica"
+ HTTP_ACCEPT_LANGUAGE: "Postavi jezik iz web preglednika"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Možete odabrati da se jezik postavi bazirano na `http_accept_language` header tag-u u internet pregledniku"
+ OVERRIDE_LOCALE: "Zaobilaženje regionalnih postavki"
+ OVERRIDE_LOCALE_HELP: "Zaobiđi PHP regionalne postavke, bazirano po trenutno odabranom jeziku"
+ REDIRECT: "Preusmjeravanje stranica"
+ REDIRECT_HELP: "Unesite rute ili eksterni URL za preusmjeravanje stranice npr. `/neka/ruta` ili `http://nekastranica.com`"
+ PLUGIN_STATUS: "Status Dodatka"
+ INCLUDE_DEFAULT_LANG: "Uključi defaultni jezik"
+ INCLUDE_DEFAULT_LANG_HELP: "Ovo će prepend sve URLs in the default language with the default language. e.g. `/en/blog/my-post`"
+ ALLOW_URL_TAXONOMY_FILTERS: "URL filteri razvrstavanja"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Page-based kolekcije dopuštaju ti da filtriraš preko `/taxonomy:value`."
+ REDIRECT_DEFAULT_CODE: "Predpostavljeni kod za preusmjeravanje"
+ REDIRECT_DEFAULT_CODE_HELP: "HTTP status kod koji se koristi kod preusmjeravanja"
+ IGNORE_HIDDEN: "Ignoriraj skriveno"
+ IGNORE_HIDDEN_HELP: "Ignoriraj sve fajlove i foldere koji počinju sa DOT"
+ WRAPPED_SITE: "Omotana stranica"
+ WRAPPED_SITE_HELP: "Za teme/dodatke da znaju ako je Grav omotan drugom platformom"
+ FALLBACK_TYPES: "Dopušteni fallback tipovi"
+ FALLBACK_TYPES_HELP: "Dopušteni tipovi fajlova koji mogu biti nađeni ako se pristupa preko Page route"
+ INLINE_TYPES: "Inline fallback tipovi"
+ INLINE_TYPES_HELP: "Lista tipova datoteka koje trebaju biti prikazane, a ne preuzete"
+ APPEND_URL_EXT: "Dodaj URL ekstenzije"
+ APPEND_URL_EXT_HELP: "Dodat će prilagođenu ekstenziju URL_u stranice. Ovo znači da u tom slučaju će Grav tražiti predložak u formatu `..twig`"
+ PAGE_MODES: "Modovi Stranica"
+ PAGE_TYPES: "Vrste stranica"
+ ACCESS_LEVELS: "Razine pristupa"
+ GROUPS: "Grupe"
+ GROUPS_HELP: "Popis grupa kojima korisnik pripada"
+ ADMIN_ACCESS: "Administratorski pristup"
+ SITE_ACCESS: "Pristup stranici"
+ INVALID_SECURITY_TOKEN: "Nevažeći sigurnosni token"
+ ACTIVATE: "Aktiviraj"
+ TWIG_UMASK_FIX: "Umask Fix"
+ TWIG_UMASK_FIX_HELP: "Po defaultu Twig stvara cache fajlove sa 0755 dozvolama, fix mijenja to na 0775"
+ CACHE_PERMS: "Cache dozvole"
+ CACHE_PERMS_HELP: "Predpostavljene dozvole datoteke za cache. Inače je 0755 ili 0775 ovisno o postavkama"
+ REMOVE_SUCCESSFUL: "Uspješno uklonjeno"
+ REMOVE_FAILED: "Uklanjanje nije uspjelo"
+ HIDE_HOME_IN_URLS: "Sakrij home rute u URL-ovima"
+ HIDE_HOME_IN_URLS_HELP: "Osigurava da pretpostavljene rute za stranice koje su pod home-om ne upućuju na regularnu rutu home-a"
+ TWIG_FIRST: "Procesiraj prvo Twig"
+ TWIG_FIRST_HELP: "U slučaju da postavite Twig procesiranje stranica, možete postaviti da se Twig procesira prije ili poslije markdown-a"
+ SESSION_SECURE: "Sigurna"
+ SESSION_SECURE_HELP: "Ako je uključeno, označava da komunikacija za ovaj kolačić mora biti preko enkriptirane veze. UPOZORENJE: Uključite ovo samo za stranice koje isključivo idu preko HTTPS-a"
+ SESSION_HTTPONLY: "Samo HTTP"
+ SESSION_HTTPONLY_HELP: "Ako je uključeno, označava da kolačići trebaju biti korišteni samo preko HTTP-a i JavaScript modifikacije nisu dozvoljene"
+ REVERSE_PROXY: "Reverse Proxy"
+ REVERSE_PROXY_HELP: "Uključite ovo ako ste iza Reverse Proxy-a i imate poteškoće sa adresama sa krivim rutama"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Krivi frontmatter. Nemoguće spremiti"
+ ADD_FOLDER: "Dodaj direktorij"
+ PROXY_URL: "Proxy URL"
+ PROXY_URL_HELP: "Unesi proxy HOST ili IP i PORT"
+ NOTHING_TO_SAVE: "Nema ništa za sačuvati"
+ FILE_ERROR_ADD: "Pojavila se pogreška tijekom pokušaja dodavanja datoteke"
+ FILE_ERROR_UPLOAD: "Pojavila se pogreška tijekom pokušaja uploada datoteke"
+ FILE_UNSUPPORTED: "Nepodržan tip fajla"
+ ADD_ITEM: "Dodaj stavku"
+ FILE_TOO_LARGE: "Datoteka je prevelika za prenošenje, maksimalna dopuštena je %s prema tvojim PHP postavkama. Povećaj svoju 'post_max_size' PHP postavku"
+ INSTALLING: "Instalacija"
+ LOADING: "Učitavanje.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Sljedeće zavisnosti trebaju prvo biti ispunjene:"
+ ERROR_INSTALLING_PACKAGES: "Greška prilikom instalacije paketa"
+ INSTALLING_DEPENDENCIES: "Instalacija ovisnosti..."
+ INSTALLING_PACKAGES: "Instaliranje paketa.."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Paket(i) uspješno instalirani."
+ READY_TO_INSTALL_PACKAGES: "Spreman za instalaciju paketa"
+ PACKAGES_NOT_INSTALLED: "Paketi nisu instalirani"
+ PACKAGES_NEED_UPDATE: "Paketi su već instalirani, ali su prestari"
+ PACKAGES_SUGGESTED_UPDATE: "Paketi su već instalirani, i verzija je u redu, ali će biti ažurirani, da bi sve bilo najnovije"
+ REMOVE_THE: "Makni %s"
+ CONFIRM_REMOVAL: "Da li ste sigurni da želite obrisati ovaj %s?"
+ REMOVED_SUCCESSFULLY: "%s je uspješno maknut"
+ ERROR_REMOVING_THE: "Pogreška prilikom uklanjanja %s"
+ READY_TO_UPDATE_PACKAGES: "Spreman za ažuriranje paketa"
+ ERROR_UPDATING_PACKAGES: "Greška prilikom ažuriranja paketa"
+ UPDATING_PACKAGES: "Ažuriranje paketa.."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Paketi su uspješno ažurirani."
+ UPDATING: "Ažuriranje"
+ GPM_RELEASES: "GPM izdanja"
+ GPM_VERIFY_PEER_HELP: "Neki davatelji usluga se ne uspjevaju provjeriti getgrav.org SSL certifikat, uzrokujući da GPM ne radi. Ako je ovo slučaj kod vas, isključivanje ove postavke bi moglo pomoći"
+ AUTO: "Auto"
+ STABLE: "Stabilna"
+ TESTING: "Testiranje"
+ FRONTMATTER_IGNORE_FIELDS: "Zanemari frontmatter polja"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Paket %s je uspješno instaliran"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Stranica nije vidljiva, ordering je onemogućen"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "Napomena: Stranica mora biti spremljena prije no što izvršite prijenos datoteka na nju."
+ DROP_FILES_HERE_TO_UPLOAD: "Ispustite datoteke ovdje ili kliknite ovdje"
+ INSERT: "Umetni"
+ UNDO: "Poništi"
+ REDO: "Vrati poništeno"
+ HEADERS: "Zaglavlja"
+ BOLD: "Podebljaj"
+ ITALIC: "Ukosi"
+ STRIKETHROUGH: "Precrtaj"
+ LINK: "Link"
+ IMAGE: "Slika"
+ BLOCKQUOTE: "Blok citat"
+ UNORDERED_LIST: "Neuređena lista"
+ ORDERED_LIST: "Uređena lista"
+ EDITOR: "Uređivač"
+ PREVIEW: "Pregled"
+ FULLSCREEN: "Puni ekran"
+ MODULAR: "Modularni"
+ NON_MODULAR: "Ne-Modularni"
+ NON_VISIBLE: "Ne-Vidljivo"
+ NON_PUBLISHED: "Neobjavljeno"
+ CHARACTERS: "znakovi"
+ PUBLISHING: "Objavljivanje"
+ NOTIFICATIONS: "Obavijesti"
+ MEDIA_TYPES: "Vrste medija"
+ IMAGE_OPTIONS: "Mogućnosti slike"
+ THUMB: "Sličica"
+ TYPE: "Vrsta"
+ FILE_EXTENSION: "Nastavak datoteke"
+ ALL: "Sve"
+ FROM: "od"
+ TO: "na"
+ RELEASE_DATE: "Datum objave"
+ SORT_BY: "Sortiraj prema"
+ RESOURCE_FILTER: "Filtar..."
+ EXTERNAL_URL: "Vanjski link"
+ SESSION_PATH: "Putanja sesije"
+ FILEUPLOAD_PREVENT_SELF: 'Ne možete koristiti "%s" izvan stranica.'
+ DROPZONE_CANCEL_UPLOAD: 'Odustani od prijenosa'
+ DROPZONE_DEFAULT_MESSAGE: 'Ispustite datoteke ovdje ili kliknite ovdje'
+ DROPZONE_FALLBACK_MESSAGE: 'Tvoj web preglednik ne podržava upload datoteka na povuci i ispusti način.'
+ DROPZONE_INVALID_FILE_TYPE: "Ne možeš uploadati datoteke ovog tipa."
+ DROPZONE_MAX_FILES_EXCEEDED: "Ne možeš uploadati više datoteka."
+ DROPZONE_REMOVE_FILE: "Ukloni datoteku"
+ PREMIUM_PRODUCT: "Premium"
+ ERROR_SIMPLE: "Jednostavna Greška"
+ ERROR_SYSTEM: "Pogreška sustava"
+ NOT_SET: "Nije postavljeno"
+ PERMISSIONS: "Dozvole"
+ REINSTALL_PLUGIN: "Ponovno instalirajte dodatak"
+ REINSTALL_THEME: "Ponovo instalirajte temu"
+ REINSTALL_THE: "Ponovo instalirajte %s"
+ CONFIRM_REINSTALL: "Da li ste sigurni da želite reinstalirati %s?"
+ REINSTALLED_SUCCESSFULLY: "%s je uspješno reinstaliran"
+ ERROR_REINSTALLING_THE: "Pogreška prilikom reinstaliranja %s"
+ REINSTALLATION_FAILED: "Ponovna instalacija nije uspjela"
+ TOOLS: "Alati"
+ DIRECT_INSTALL: "Izravno instaliranje"
+ NO_PACKAGE_NAME: "Ime paketa nije navedeno"
+ NOT_VALID_GRAV_PACKAGE: "Grav paket nije valjan"
+ NAME_COULD_NOT_BE_DETERMINED: "Ime nije moguće odrediti"
+ ZIP_PACKAGE_NOT_FOUND: "ZIP pakiranje nije nađeno"
+ GPM_OFFICIAL_ONLY: "Samo službeni GPM"
+ GPM_OFFICIAL_ONLY_HELP: "Dopustiti izravne instalacije samo iz službenih GPM repozitorija."
+ PWD_PLACEHOLDER: "kompleks niz dug barem 8 znakova"
+ USERNAME_PLACEHOLDER: "samo mala slova, npr. 'admin'"
+ 2FA_TITLE: "Dvo faktorska autentifikacija"
+ 2FA_LABEL: "Admin pristup"
+ 2FA_ENABLED: "2FA omogućena"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_REGENERATE: "Ponovno stvori"
+ VIEW_SITE_TIP: "Prikaz stranice"
+ TOOLS_DIRECT_INSTALL_TITLE: "Direktna instalacija Grav paketa"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Instaliraj paket kroz izravni ZIP upload"
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Instaliraj Paket kroz link"
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Uploadaj i instaliraj"
diff --git a/user/plugins/admin/languages/hu.yaml b/user/plugins/admin/languages/hu.yaml
new file mode 100644
index 0000000..0659cd5
--- /dev/null
+++ b/user/plugins/admin/languages/hu.yaml
@@ -0,0 +1,756 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Ez egy béta kiadás! Éles környezetben csak saját felelősségre használd..."
+ ADMIN_REPORT_ISSUE: "Találtál egy hibát? Kérlek jelezd a GitHub-on."
+ EMAIL_FOOTER: "Powered by Grav - Egy Modern, File-alapú CMS"
+ LOGIN_BTN: "Bejelentkezés"
+ LOGIN_BTN_FORGOT: "Elfelejtettem"
+ LOGIN_BTN_RESET: "Új jelszó"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Jelszócsere információk küldése"
+ LOGIN_BTN_CLEAR: "Űrlap törlése"
+ LOGIN_BTN_CREATE_USER: "Felhasználó létrehozása"
+ LOGIN_LOGGED_IN: "Sikeresen bejelentkeztél"
+ LOGIN_FAILED: "Nem sikerült bejelentkezni"
+ LOGGED_OUT: "Kijelentkeztél"
+ RESET_NEW_PASSWORD: "Kérjük adjon meg egy új jelszót …"
+ RESET_LINK_EXPIRED: "A jelszócsere hivatkozás elavult, kérj újat"
+ RESET_PASSWORD_RESET: "A jelszócsere megtörtént"
+ RESET_INVALID_LINK: "Érvénytelen jelszócsere hivatkozás, kérjük próbáld újra"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "A jelszócserével kapcsolatos instrukciók erre a címre lettek elküldve: %s"
+ FORGOT_FAILED_TO_EMAIL: "Nem sikerült elküldeni emailen az instrukciókat, kérjük próbáld meg később"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "%s jelszavát nem lehet lercserélni, nem tartozik hozzá cím"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "%s nevű felhasználó nem létezik"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Nem lehet jelszót cserélni. Ez a weboldal nincs email-küldéshez konfigurálva"
+ FORGOT_EMAIL_SUBJECT: "%s jelszócsere kérés"
+ FORGOT_EMAIL_BODY: "
Jelszócsere
Kedves %1$s,
Az alábbi időpontban valaki a jelszavad cseréjét kezdeményezte: %4$s.
Esetleg másold a következő URL-t a böngésződ címsávjába:
%2$s
Üdvözlettel,
%3$s
"
+ MANAGE_PAGES: "Oldalak Kezelése"
+ CONFIGURATION: "Beállítások"
+ PAGES: "Oldalak"
+ PLUGINS: "Pluginek"
+ PLUGIN: "Plugin"
+ THEMES: "Témák"
+ LOGOUT: "Kijelentkezés"
+ BACK: "Vissza"
+ NEXT: "Következő"
+ PREVIOUS: "Előző"
+ ADD_PAGE: "Oldal Hozzáadása"
+ ADD_MODULAR: "Aloldal Hozzáadása"
+ MOVE: "Áthelyezés"
+ DELETE: "Törlés"
+ UNSET: "Beállítás törlése"
+ VIEW: "Nézet"
+ SAVE: "Mentés"
+ NORMAL: "Normál"
+ EXPERT: "Haladó"
+ EXPAND_ALL: "Mindet Kinyit"
+ COLLAPSE_ALL: "Mindet Bezár"
+ ERROR: "Hiba"
+ CLOSE: "Bezárás"
+ CANCEL: "Mégse"
+ CONTINUE: "Folytatás"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Jóváhagyás Szükséges"
+ MODAL_CHANGED_DETECTED_TITLE: "Változások Észlelve"
+ MODAL_CHANGED_DETECTED_DESC: "Nincs minden változtatás elmentve. Biztosan elhagyod az oldalt mentés nélkül?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Jóváhagyás Szükséges"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Biztosan törölni szeretnéd ezt a fájlt? Ha törlöd, nem lehet visszaállítani."
+ ADD_FILTERS: "Szűrők Hozzáadása"
+ SEARCH_PAGES: "Oldalak Keresése"
+ VERSION: "Verzió"
+ WAS_MADE_WITH: "felhasználásával"
+ BY: "Készítette"
+ UPDATE_THEME: "Téma Frissítése"
+ UPDATE_PLUGIN: "Plugin Frissítése"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "ebből a témából elérhető"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "ebből a pluginból elérhető"
+ AUTHOR: "Szerző"
+ HOMEPAGE: "Honlap"
+ DEMO: "Demó"
+ BUG_TRACKER: "Hibabejelentés"
+ KEYWORDS: "Kulcsszavak"
+ LICENSE: "Licenc"
+ DESCRIPTION: "Leírás"
+ README: "Olvass El"
+ REMOVE_THEME: "Téma Eltávolítása"
+ INSTALL_THEME: "Téma Telepítése"
+ THEME: "Téma"
+ BACK_TO_THEMES: "Vissza a Témákhoz"
+ BACK_TO_PLUGINS: "Vissza a Pluginekhez"
+ CHECK_FOR_UPDATES: "Frissítések Keresése"
+ ADD: "Hozzáadás"
+ CLEAR_CACHE: "Gyorsítótár Törlése"
+ CLEAR_CACHE_ALL_CACHE: "Minden Gyorsítótár"
+ CLEAR_CACHE_ASSETS_ONLY: "Csak Egyéb Dolgok"
+ CLEAR_CACHE_IMAGES_ONLY: "Csak Képek"
+ CLEAR_CACHE_CACHE_ONLY: "Csak Gyorsítótár"
+ CLEAR_CACHE_TMP_ONLY: "Csak Tmp"
+ DASHBOARD: "Áttekintés"
+ UPDATES_AVAILABLE: "Új Frissítések Elérhetőek"
+ DAYS: "Napja"
+ UPDATE: "Frissítés"
+ BACKUP: "Biztonsági Mentés"
+ BACKUPS: "Biztonsági mentések"
+ BACKUP_NOW: "Biztonsági mentés készítése"
+ BACKUPS_STATS: "Biztonsági mentés statisztika"
+ BACKUPS_HISTORY: "Biztonsági mentés történet"
+ BACKUPS_PURGE_CONFIG: "Biztonsági mentés tisztításának beállítása"
+ BACKUPS_PROFILES: "Mentési profilok"
+ BACKUPS_COUNT: "Mentések száma"
+ BACKUPS_PROFILES_COUNT: "Profilok száma"
+ BACKUPS_TOTAL_SIZE: "Használt tárhely"
+ BACKUPS_NEWEST: "Legfrissebb mentés"
+ BACKUPS_OLDEST: "Legrégebbi mentés"
+ BACKUPS_PURGE: "Tisztítás"
+ BACKUPS_NOT_GENERATED: "Még nem készültek biztonsági mentések..."
+ BACKUPS_PURGE_TIME: "%s nap biztonsági mentés maradt"
+ BACKUP_DELETED: "Mentés sikeresen törölve"
+ BACKUP_NOT_FOUND: "A biztonsági mentés nem található"
+ BACKUP_DATE: "Mentés dátuma"
+ STATISTICS: "Statisztika"
+ TODAY: "Mai"
+ WEEK: "Heti"
+ MONTH: "Havi"
+ LATEST_PAGE_UPDATES: "Utoljára Módosított Lapok"
+ MAINTENANCE: "Karbantartás"
+ UPDATED: "Frissítve"
+ MON: "Hé"
+ TUE: "Ke"
+ WED: "Sze"
+ THU: "Csü"
+ FRI: "Pé"
+ SAT: "Szo"
+ SUN: "Vas"
+ COPY: "Másolás"
+ EDIT: "Szerkesztés"
+ CREATE: "Létrehozás"
+ GRAV_ADMIN: "Grav admin"
+ GRAV_OFFICIAL_PLUGIN: "Grav Hivatalos Plugin"
+ GRAV_OFFICIAL_THEME: "Grav Hivatalos Téma"
+ PLUGIN_SYMBOLICALLY_LINKED: "Ez a plugin szimbolikusan linkelt. A frissítések nem lesznek észlelve"
+ THEME_SYMBOLICALLY_LINKED: "Ez a téma szimbolikusan linkelt. A frissítések nem lesznek észlelve"
+ REMOVE_PLUGIN: "Plugin Eltávolítása"
+ INSTALL_PLUGIN: "Plugin Telepítése"
+ AVAILABLE: "Elérhető"
+ INSTALLED: "Telepítve"
+ INSTALL: "Telepítés"
+ ACTIVE_THEME: "Aktív Téma"
+ SWITCHING_TO: "Átváltás"
+ SWITCHING_TO_DESCRIPTION: "Miután egy másik témára váltasz, nem garantálható, hogy minden oldalelrendezés működni fog - hibák léphetnek fel bizonyos oldalak betöltésekor."
+ SWITCHING_TO_CONFIRMATION: "Folytatod és átváltasz erre a témára"
+ CREATE_NEW_USER: "Új Felhasználó"
+ REMOVE_USER: "Felhasználó Törlése"
+ ACCESS_DENIED: "Hozzáférés Megtagadva"
+ ACCOUNT_NOT_ADMIN: "a felhasználód nem rendelkezik adminisztrátor jogokkal"
+ PHP_INFO: "PHP Infó"
+ INSTALLER: "Telepítő"
+ AVAILABLE_THEMES: "Elérhető Témák"
+ AVAILABLE_PLUGINS: "Elérhető Pluginek"
+ INSTALLED_THEMES: "Telepített Témák"
+ INSTALLED_PLUGINS: "Telepített Pluginek"
+ BROWSE_ERROR_LOGS: "Hibanapló Olvasása"
+ SITE: "Oldal"
+ INFO: "Infó"
+ SYSTEM: "Rendszer"
+ USER: "Felhasználó"
+ ADD_ACCOUNT: "Fiók Létrehozása"
+ SWITCH_LANGUAGE: "Nyelv Váltása"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Sikeresen plugin aktiváció"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Sikeresen letiltott plugin\""
+ SUCCESSFULLY_CHANGED_THEME: "Alapértelmezett téma megváltoztatva"
+ INSTALLATION_FAILED: "Sikertelen telepítés"
+ INSTALLATION_SUCCESSFUL: "Sikeres telepítés"
+ UNINSTALL_FAILED: "Sikertelen eltávolítás"
+ UNINSTALL_SUCCESSFUL: "Sikeres eltávolítás"
+ SUCCESSFULLY_SAVED: "Sikeresen mentve"
+ SUCCESSFULLY_COPIED: "Sikeresen másolva"
+ REORDERING_WAS_SUCCESSFUL: "Az átrendezés sikerült"
+ SUCCESSFULLY_DELETED: "Sikeres törlés"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Sikeres váltás az új nyelvre"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Nincs jogosultságod erre a műveletre"
+ CACHE_CLEARED: "Gyorsítótár törölve"
+ METHOD: "Metódus"
+ ERROR_CLEARING_CACHE: "Hiba a gyorsítótár törlésekor"
+ AN_ERROR_OCCURRED: "Egy hiba lépett fel"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "A biztonsági mentés letölthető"
+ DOWNLOAD_BACKUP: "Biztonsági mentés letöltése"
+ PAGES_FILTERED: "Kiszűrt oldalak"
+ NO_PAGE_FOUND: "Nincs ilyen oldal"
+ INVALID_PARAMETERS: "Érvénytelen Paraméterek"
+ NO_FILES_SENT: "Nincs küldött fájl"
+ EXCEEDED_FILESIZE_LIMIT: "Meghaladta a PHP konfigurációs fájlméret korlátot"
+ UNKNOWN_ERRORS: "Ismeretlen hiba"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Meghaladta a Grav konfigurációs fájlméret korlátot"
+ UNSUPPORTED_FILE_TYPE: "Nem támogatott fájlformátum"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Nem sikerült áthelyezni a feltöltött fájlt."
+ FILE_UPLOADED_SUCCESSFULLY: "A fájl sikeresen feltöltve"
+ FILE_DELETED: "Fájl törölve"
+ FILE_COULD_NOT_BE_DELETED: "A fájl nem törölhető"
+ FILE_NOT_FOUND: "A fájl nem található"
+ NO_FILE_FOUND: "Nem található fájl"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "A Grav sikeresen frissült a következő verzióra:"
+ GRAV_UPDATE_FAILED: "A Grav frissítés nem sikerült"
+ EVERYTHING_UPDATED: "Minden frissítve lett"
+ UPDATES_FAILED: "Sikertelen frissítés"
+ AVATAR_BY: "A profilkép forrása"
+ AVATAR_UPLOAD_OWN: "Vagy töltsd fel a sajátod..."
+ LAST_BACKUP: "Utolsó Mentés"
+ FULL_NAME: "Teljes név"
+ USERNAME: "Felhasználónév"
+ EMAIL: "Emailcím"
+ USERNAME_EMAIL: "Felhasználónév vagy e-mail"
+ PASSWORD: "Jelszó"
+ PASSWORD_CONFIRM: "Jelszó megerősítése"
+ TITLE: "Cím"
+ LANGUAGE: "Nyelv"
+ ACCOUNT: "Felhasználói fiók"
+ EMAIL_VALIDATION_MESSAGE: "Érvénytelen email-cím"
+ PASSWORD_VALIDATION_MESSAGE: "A jelszónak legalább egy számot, egy kis- és egy nagybetűt kell tartalmaznia, és legalább 8 karakter hosszú kell, hogy legyen"
+ LANGUAGE_HELP: "Kedvenc nyelv beállítása"
+ MEDIA: "Média"
+ DEFAULTS: "Alapértelmezett Értékek"
+ SITE_TITLE: "Weboldal Címe"
+ SITE_TITLE_PLACEHOLDER: "Weboldal Általános Címe"
+ SITE_TITLE_HELP: "A weboldal alapértelmezett címe, a témákban többször szerepelhet"
+ SITE_DEFAULT_LANG: "Alapértelmezett nyelv"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Alapértelmezett nyelv a téma tag-jében"
+ SITE_DEFAULT_LANG_HELP: "Alapértelmezett nyelv a téma tag-jében"
+ DEFAULT_AUTHOR: "Alapértelmezett Szerző"
+ DEFAULT_AUTHOR_HELP: "Egy alapértelmezett szerzői név, témákban valamint a lapokban többször előfordul"
+ DEFAULT_EMAIL: "Alapértelmezett email"
+ DEFAULT_EMAIL_HELP: "Egy alapértelmezett email, melyre a témák és lapok is hivatkozhatnak"
+ TAXONOMY_TYPES: "Taxonómia Típusok"
+ TAXONOMY_TYPES_HELP: "Az oldalakon használatos taxonómia-típusokat itt kell definiálni"
+ PAGE_SUMMARY: "Oldal Összefoglaló"
+ ENABLED: "Be"
+ ENABLED_HELP: "Oldal összegfoglaló bekapcsolása (az összefoglaló ugyanazt tartalmazza, mint az oldal)"
+ 'YES': "Igen"
+ 'NO': "Nem"
+ SUMMARY_SIZE: "Összefoglaló Mérete"
+ SUMMARY_SIZE_HELP: "A tartalom összefoglalóban szereplő karakterek száma"
+ FORMAT: "Formátum"
+ FORMAT_HELP: "rövid = az első elválasztóig, vagy a meghatározott karakterszámig; hosszú = az elválasztó figyelmen kívül lesz hagyva"
+ SHORT: "Rövid"
+ LONG: "Hosszú"
+ DELIMITER: "Elválasztó"
+ DELIMITER_HELP: "Az összefoglaló elválasztója (alapértelmezetten '===')"
+ METADATA: "Meta-adat"
+ METADATA_HELP: "Alapértelmezett meta-adatok, melyek minden oldalon megjelennek, hacsak nem kerülnek felülírásra az oldalnál"
+ NAME: "Név"
+ CONTENT: "Tartalom"
+ SIZE: "Méret"
+ ACTION: "Művelet"
+ REDIRECTS_AND_ROUTES: "Átirányítások és Útvonalak"
+ CUSTOM_REDIRECTS: "Saját Átirányítások"
+ CUSTOM_REDIRECTS_HELP: "útvonalak, melyek más oldalakra visznek. Sztenderd Regex kifejezések használhatóak"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/sajat/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/sajat/atiranyitas"
+ CUSTOM_ROUTES: "Saját Útvonalak"
+ CUSTOM_ROUTES_HELP: "útvonal aliasok más lapokra. Sztenderd Regex kifejezések használhatók"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/sajat/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/sajat/utvonal"
+ FILE_STREAMS: "Fájl Folyamok"
+ DEFAULT: "Alapértelmezett"
+ PAGE_MEDIA: "A Lap Médiái"
+ OPTIONS: "Lehetőségek"
+ PUBLISHED: "Közzétéve"
+ PUBLISHED_HELP: "Alapértelmezés szerint egy lap közzé van téve, ha csak a közzététel nem hamis, vagy a publish_date a jövőbe mutat, vagy az unpublish_date a múltban van"
+ DATE: "Dátum"
+ DATE_HELP: "A megadott dátum lesz az oldal létrehozásának dátuma."
+ PUBLISHED_DATE: "Közzététel Dátuma"
+ PUBLISHED_DATE_HELP: "Megadható tetszőleges dátum, amikor az oldal közzétételre kerül."
+ UNPUBLISHED_DATE: "Közlés Visszavonása"
+ UNPUBLISHED_DATE_HELP: "Megadható egy dátum, amikor az oldal közzététele visszavonásra kerül."
+ ROBOTS: "Robotok"
+ TAXONOMIES: "Taxonómiák"
+ TAXONOMY: "Taxonómia"
+ ADVANCED: "Haladó Beállítások"
+ SETTINGS: "Beállítások"
+ FOLDER_NUMERIC_PREFIX: "Mappa Numerikus Előtag"
+ FOLDER_NUMERIC_PREFIX_HELP: "Numerikus előtag, mellyel felülírható a lapok sorrendje és meghatározza láthatóságukat"
+ FOLDER_NAME: "Mappa Neve"
+ FOLDER_NAME_HELP: "A lap ebben a mappában lesz fizikailag tárolva"
+ PARENT: "Szülő"
+ DEFAULT_OPTION_ROOT: "- Gyökér -"
+ DEFAULT_OPTION_SELECT: "- Válassz -"
+ DISPLAY_TEMPLATE: "Megjelenítő Sablonja"
+ DISPLAY_TEMPLATE_HELP: "A laptípus, mely azt mondja meg, hogy melyik twig-sablon állítja elő a lapot"
+ BODY_CLASSES: "Tartalom Osztályok"
+ ORDERING: "Sorrend"
+ PAGE_ORDER: "Lapsorrend"
+ OVERRIDES: "Felülírások"
+ MENU: "Menü"
+ MENU_HELP: "Ez a felirat jelenik meg a menüben. Ha nincs beállítva, a cím fog megjelenni."
+ SLUG: "Slug"
+ SLUG_HELP: "A slug meghatározza a lapra jellemző részt az URL-ben"
+ SLUG_VALIDATE_MESSAGE: "Egy slug csak kis alfanumerikus karaktereket és kötőjelet tartalmazhat"
+ PROCESS: "Feldolgozás"
+ PROCESS_HELP: "Szabályozza a sablonok feldolgozását. Állítható laponként és globálisan is"
+ DEFAULT_CHILD_TYPE: "Alapértelmezett Aloldal Típus"
+ USE_GLOBAL: "Alapértelmezés Szerint"
+ ROUTABLE: "Elérhető"
+ ROUTABLE_HELP: "Meghatározza, hogy az oldal elérhető-e URL alapján"
+ CACHING: "Gyorsítótárazás"
+ VISIBLE: "Látható"
+ VISIBLE_HELP: "Meghatározza, hogy az oldal megjelenik-e a navigációban"
+ DISABLED: "Ki"
+ ITEMS: "Elemek"
+ ORDER_BY: "Rendezés"
+ ORDER: "Sorrend"
+ FOLDER: "Mappa"
+ ASCENDING: "Növekvő"
+ DESCENDING: "Csökkenő"
+ ADD_MODULAR_CONTENT: "Moduláris Tartalom Hozzáadása"
+ PAGE_TITLE: "Oldal Címe"
+ PAGE_TITLE_HELP: "Az oldal címe"
+ PAGE: "Oldal"
+ MODULAR_TEMPLATE: "Moduláris Sablon"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Fájlnév"
+ PARENT_PAGE: "Szülő Oldal"
+ HOME_PAGE: "Kezdőoldal"
+ HOME_PAGE_HELP: "A lap, amit a Grav alapértelmezett kiindulólapnak fog használni"
+ DEFAULT_THEME: "Alapértelmezett téma"
+ DEFAULT_THEME_HELP: "Az alapértelmezett téma, amelyet a Grav használ (ez az Antimatter)"
+ TIMEZONE: "Időzóna"
+ TIMEZONE_HELP: "Felülíja a szerver alapértelmezett időzónáját"
+ SHORT_DATE_FORMAT: "Rövid dátumformátum"
+ SHORT_DATE_FORMAT_HELP: "Beállítja a rövid dátumformátumot, amit a témák használnak"
+ LONG_DATE_FORMAT: "Hosszú dátumformátum"
+ LONG_DATE_FORMAT_HELP: "A hosszú dátumformátum, amit a témák használnak"
+ DEFAULT_ORDERING: "Alapértelmezett rendezés"
+ DEFAULT_ORDERING_HELP: "A lapok ezt a sorrendet használva jelennek meg, amíg ez a lista nem kerül felülírásra"
+ DEFAULT_ORDERING_DEFAULT: "Alapértelmezett - a mappa neve alapján"
+ DEFAULT_ORDERING_FOLDER: "Mappa - előtagmentes mappanév alapján"
+ DEFAULT_ORDERING_TITLE: "Cím - a fejlécben szereplő cím alapján"
+ DEFAULT_ORDERING_DATE: "Dátum - a fejlécben szereplő dátum alapján"
+ DEFAULT_ORDER_DIRECTION: "Rendezés alapértelmezett iránya"
+ DEFAULT_ORDER_DIRECTION_HELP: "Egy listában szereplő lapok rendezési sorrendje"
+ DEFAULT_PAGE_COUNT: "Oldalak alapértelmezett száma"
+ DEFAULT_PAGE_COUNT_HELP: "Lapok alapértelmezett maximális száma"
+ DATE_BASED_PUBLISHING: "Dátum-alapú közzététel"
+ DATE_BASED_PUBLISHING_HELP: "Automatikusan publikál/visszavon bejegyzéseket dátum alapján"
+ EVENTS: "Események"
+ EVENTS_HELP: "Meghatározott események engedélyezése, vagy tiltása. Tiltás esetén bizonyos pluginek nem működhetnek"
+ REDIRECT_DEFAULT_ROUTE: "Átírányítás útvonalra"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Automatikusan az alapértelmezett útvonalra irányít át"
+ LANGUAGES: "Nyelvek"
+ SUPPORTED: "Támogatott"
+ SUPPORTED_HELP: "Kétbetűs nyelvkódok vesszővel elválasztott listája (pl.: 'en,fr,de')"
+ TRANSLATIONS_ENABLED: "Fordítások engedélyezve"
+ TRANSLATIONS_ENABLED_HELP: "Fordítások engedélyezése a Grav-ban, a pluginekben és kiegészítőkben"
+ TRANSLATIONS_FALLBACK: "Alapértelmezett Fordítás"
+ TRANSLATIONS_FALLBACK_HELP: "Ha az aktív nyelven nem elérhető a fordítás, ezt használjuk"
+ ACTIVE_LANGUAGE_IN_SESSION: "Aktív nyelv a sessionben"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Az aktuális nyelv tárolása sessionben"
+ HTTP_HEADERS: "HTTP Fejlécek"
+ EXPIRES: "Lejárat"
+ EXPIRES_HELP: "A lejárati idő a fejlécben. Másodpercben értendő."
+ CACHE_CONTROL: "HTTP-Cache-Vezérlő"
+ CACHE_CONTROL_HELP: "Állíts be egy érvényes cache-vezérlő értéket, mint pl. `no-cahce, no-store, must-revalide`"
+ LAST_MODIFIED: "Utoljára módosítva"
+ LAST_MODIFIED_HELP: "Beállítja az utoljára módosítva fejlécet, mely segít optimalizálni a proxy és a böngésző gyorstárazását"
+ ETAG: "ETag"
+ ETAG_HELP: "Beállítja az etag fejlécet, mely megmutatja, módosult-e a tartalom"
+ VARY_ACCEPT_ENCODING: "\"Vary accept encoding\" HTTP fejléc"
+ VARY_ACCEPT_ENCODING_HELP: "Beállítja a `Vary: Accept Encoding` fejlécet, mely elősegíti a proxy és CDN gyorsítótárazást"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Markdown extra"
+ MARKDOWN_EXTRA_HELP: "Engedélyezi a Markdown Extra támogatást - https://michelf.ca/projects/php-markdown/extra/"
+ AUTO_LINE_BREAKS: "Automatikus sortörés"
+ AUTO_LINE_BREAKS_HELP: "Engedélyezi az automatikus sortörést a markdown szövegekben"
+ AUTO_URL_LINKS: "Automatikus URL linkek"
+ AUTO_URL_LINKS_HELP: "Engedélyezi az URL-ek automatikus HTML-linkekké alakítását"
+ ESCAPE_MARKUP: "Markup tagek átalakítása"
+ ESCAPE_MARKUP_HELP: "A markup tagek HTML-elemekké alakítása"
+ CACHING_HELP: "A Grav gyorsítótárának globális KI/BE kapcsolója"
+ CACHE_CHECK_METHOD: "Gyorsítótár ellenőrzés módja"
+ CACHE_CHECK_METHOD_HELP: "Meghatárzza, hogy a Grav milyen módon vizsgálja meg, hogy egy oldal módosult-e?"
+ CACHE_DRIVER: "Gyorsítótár meghajtó"
+ CACHE_DRIVER_HELP: "Válaszd ki melyik meghajtót használja a Grav. 'Auto Detect' esetén a legjobbnak tűnő megoldást használjuk"
+ CACHE_PREFIX: "Gyorsítótár előtag"
+ CACHE_PREFIX_HELP: "Egy azonosító, mely a Grav kulcsának része lesz. Ha nem vagy biztos a dolgodban, ne változtasd meg."
+ CACHE_PREFIX_PLACEHOLDER: "A bázis URL-ből származtatva (felülírhatod egy tetszőleges szöveggel)"
+ CACHE_PURGE_JOB: "Ütemezett tisztítás indítása"
+ CACHE_PURGE_JOB_HELP: "Az ütemező segítségével időről időre törölheti a régi Doctrine fájlok gyorsítótár mappáit ezzel a feladattal"
+ CACHE_PURGE: "Régi gyorsítótárak törlése"
+ LIFETIME: "Élettartam"
+ LIFETIME_HELP: "A gyorsítótár élettartama. 0 = végtelen"
+ GZIP_COMPRESSION: "Gzip-tömörítés"
+ GZIP_COMPRESSION_HELP: "Engedélyezi a GZip-tömörítést a Grav oldalakon, a gyorsabb elérés érdekében."
+ TWIG_TEMPLATING: "Twig Sablonok"
+ TWIG_CACHING: "Twig gyorsítótár"
+ TWIG_CACHING_HELP: "Szabályozza a Twig gyorsítótárazását. Hagyd bekapcsolva a jobb teljesítmény érdekében."
+ TWIG_DEBUG: "Twig hibakeresés"
+ TWIG_DEBUG_HELP: "Lehetőséget biztosít, hogy ne töltődjön be a Twig Debugger kiegészítő"
+ DETECT_CHANGES: "Változások észlelése"
+ DETECT_CHANGES_HELP: "A Twig automatikusan újragenerálja a gyorsítótárat, ha változást észlel a sablonokban"
+ AUTOESCAPE_VARIABLES: "Változók átalakítása"
+ AUTOESCAPE_VARIABLES_HELP: "Minden változót automatikusan átalakít. Ez legtöbbször kinyírja az oldaladat"
+ ASSETS: "Webes állományok"
+ CSS_PIPELINE: "CSS pipeline"
+ CSS_PIPELINE_HELP: "A CSS pipeline segítségével az összes CSS állomány egy fájlba kerül kiírásra"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Külső hivatkozások hozzávétele a CSS pipeline-ba"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "A külső URL-eknek lehetnek relatív hivatkozásai, ezért nem kéne belevenni a pipeline-ba"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "CSS pipeline feldolgozása előbb"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "A CSS pipeline feldolgozása a többi nem beillesztett CSS hivatkozás előtt"
+ CSS_MINIFY: "CSS zsugorítás"
+ CSS_MINIFY_HELP: "Összezsugorítja a CSS állományokat a pipelining során"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "CSS minify felülbírálása Windows alatt"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "A minify művelet felülbírálása Windows platformon. A ThreadStackSize értéke miatt Nem alapértelmezetten"
+ CSS_REWRITE: "CSS átírás"
+ CSS_REWRITE_HELP: "A pipelining alatt minden relatív URL-t átír a CSS definíciókban"
+ JAVASCRIPT_PIPELINE: "JavaScript pipeline"
+ JAVASCRIPT_PIPELINE_HELP: "A JS pipeline segítségével az összes JS állomány egy fájlba kerül kiírásra"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Külső elemek beillesztése a JS pipeline-ba"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "A külső URL-eknek lehetnek relatív hivatkozásai, ezért nem kéne belevenni a pipeline-ba"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "JS pipeline feldolgozása előbb"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "A JS pipelinefeldolgozása a többi nem beillesztett JS hivatkozás előtt"
+ JAVASCRIPT_MINIFY: "JavaScript zsugorítás"
+ JAVASCRIPT_MINIFY_HELP: "Összezsugorítja a JS állományokat pipelining során"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Időbélyegek az állományokon"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Engedélyezi az időbélyegek használatát a Webes állományokon"
+ COLLECTIONS: "Kollekciók"
+ ERROR_HANDLER: "Hibakezelő"
+ DISPLAY_ERRORS: "Hibák megjelenítése"
+ DISPLAY_ERRORS_HELP: "Teljes, visszakövethető hibaoldal megjelenítése"
+ LOG_ERRORS: "Hibák naplózása"
+ LOG_ERRORS_HELP: "Hibák naplózása a /logs mappában"
+ LOG_HANDLER: "Napló-kezelő"
+ LOG_HANDLER_HELP: "Hova mentsük a naplófájlokat"
+ SYSLOG_FACILITY: "Syslog szolgáltatás"
+ SYSLOG_FACILITY_HELP: "Syslog szolgáltatás a kimenethez"
+ DEBUGGER: "Hibakereső"
+ DEBUGGER_HELP: "Engedélyezi a Grav hibakeresőt és az alábbiakat"
+ DEBUG_TWIG: "Twig Hibakeresés"
+ DEBUG_TWIG_HELP: "Engedélyezi a Twig sablonok hibakeresését"
+ SHUTDOWN_CLOSE_CONNECTION: "A leállítás bezárja a kapcsolatokat"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Lezárja a kapcsolatot az onShutdown() hívása előtt. Legyen Nem hibakeresésnél"
+ DEFAULT_IMAGE_QUALITY: "Alapértelmezett képminőség"
+ DEFAULT_IMAGE_QUALITY_HELP: "Az alapértelmezett képminőség átméretezés, vagy gyorsítótárazás során (85%)"
+ CACHE_ALL: "Az összes kép gyorsítótárazása"
+ CACHE_ALL_HELP: "Az összes képen végigfut a Grav gyorsítótárazó, még azokon is, amelyek nincsenek manipulálva"
+ IMAGES_DEBUG: "Vízjel hibakereséshez"
+ IMAGES_DEBUG_HELP: "Megjelenít egy vízjelet a kép felett annak pixelsűrűségével, amely hasznos lehet retinakijelzőkön, például"
+ UPLOAD_LIMIT: "File-feltölés limit"
+ UPLOAD_LIMIT_HELP: "Beállítja a maximális feltöltési limitet (0 esetén korlátlan)"
+ ENABLE_MEDIA_TIMESTAMP: "Időbélyeg a médiaállományokon"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Hozzáfűzi minden miédiafájl nevéhez az utolsó módosítás időbélyegét"
+ SESSION: "Munkamenet"
+ SESSION_ENABLED_HELP: "A Grav session-kezelés bekapcsolása"
+ TIMEOUT: "Időtúllépés"
+ TIMEOUT_HELP: "A session időtúllépése, mp-ben"
+ SESSION_NAME_HELP: "Egy azonosító, a session süti generálásához"
+ SESSION_UNIQUENESS: "Egyedi string"
+ ABSOLUTE_URLS: "Abszolút URL-ek"
+ ABSOLUTE_URLS_HELP: "Abszolút vagy relatív URL-ek a bázis URL-ben"
+ PARAMETER_SEPARATOR: "Paraméter-elválasztó"
+ PARAMETER_SEPARATOR_HELP: "Az átadott paraméterek elválasztója, mely az Apache Windowsos változatánál változtatható meg"
+ TASK_COMPLETED: "Feladat kész"
+ EVERYTHING_UP_TO_DATE: "Minden naprakész"
+ UPDATES_ARE_AVAILABLE: "frissítések elérhető"
+ IS_AVAILABLE_FOR_UPDATE: "frissítés érhető el"
+ IS_NOW_AVAILABLE: "elérhető"
+ CURRENT: "Jelenlegi"
+ UPDATE_GRAV_NOW: "Grav Frissítése Most"
+ GRAV_SYMBOLICALLY_LINKED: "A Grav szimbolikusan linkelt. A frissítés nem lehetséges"
+ UPDATING_PLEASE_WAIT: "Frissítés... kis türelmet, letöltés"
+ OF_THIS: "változatú"
+ OF_YOUR: "a te"
+ HAVE_AN_UPDATE_AVAILABLE: "van frissebb változat"
+ SAVE_AS: "Mentés, mint"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Biztosan törlöd ezt az oldalt és aloldalait? Ha tartozik hozzá fordítás, azokat még egyesével törölni kell. Máskülönben a mappa oldalakkal együtt törölve lesz. Ez a művelet nem visszavonható."
+ AND: "és"
+ UPDATE_AVAILABLE: "Frissítés elérhető"
+ METADATA_KEY: "Kulcs (pl. 'Keywords')"
+ METADATA_VALUE: "Érték (pl. 'Blog, Grav')"
+ USERNAME_HELP: "A felhasználónév 3 és 16 karakter hosszú legyen, tartalmazhat kisbetűket, számokat, aláhúzást és kötőjelet. Nagybetűk, szóköz és speciális karakterek nem használhatóak."
+ FULLY_UPDATED: "Teljesen Naprakész"
+ SAVE_LOCATION: "Mentés helye"
+ PAGE_FILE: "Oldal sablon"
+ PAGE_FILE_HELP: "Oldal sablon fájlneve és alapértelmezetten a megjelenítési sablon az oldalhoz"
+ NO_USER_ACCOUNTS: "Nincs egyetlen felhasználó sem, először hozz létre egyet..."
+ NO_USER_EXISTS: "Nincs helyi felhasználó ehhez a fiókhoz, nem tudjuk menteni..."
+ REDIRECT_TRAILING_SLASH: "Perjellel végőződ címek"
+ REDIRECT_TRAILING_SLASH_HELP: "Végrehajt egy 301-es átirányítást a perjellel végződő URI-ken, ahelyett hogy transzparensen lekezelné azokat."
+ DEFAULT_DATE_FORMAT: "Oldal dátum formátuma"
+ DEFAULT_DATE_FORMAT_HELP: "A Grav által használt dátumformátum. Alapértelmezetten a Grav megpróbálja ezt kitalálni, ám megadható a PHP's dátumszintaxisát használva (pl.: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Próbálja meg kitalálni"
+ IGNORE_FILES: "Mellőzött fájlok listája"
+ IGNORE_FILES_HELP: "Ezek a fájlok figyelmen kívül lesznek hagyva a lapok feldolgozásakor"
+ IGNORE_FOLDERS: "Mellőzött mappák"
+ IGNORE_FOLDERS_HELP: "Ezek a mappák figyelmen kívül lesznek hagyva a lapok feldolgozásakor"
+ HIDE_EMPTY_FOLDERS: "Üres mappák elrejtése"
+ HTTP_ACCEPT_LANGUAGE: "Nyelv beállítása böngészőből"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Választhatod, hogy a böngésző `http_accept_language` fejléc tagjének alapján kerüljön a nyelv kiválasztásra"
+ OVERRIDE_LOCALE: "Helyszín felülbírálása"
+ OVERRIDE_LOCALE_HELP: "A PHP területi beállításainak felülbírálása a nyelv kiválasztásához"
+ REDIRECT: "Oldal átirányítása"
+ REDIRECT_HELP: "Adj meg egy útvonalat, vagy külső URL-t, ahova ez az oldal mutasson, pl. `/egy/utvonal` vagy `http://egyoldal.hu`"
+ PLUGIN_STATUS: "Plugin állapota"
+ INCLUDE_DEFAULT_LANG: "Nyelv beillesztése"
+ INCLUDE_DEFAULT_LANG_HELP: "Minden URL elé beilleszti az alapértelmezett nyelvet. pl. `/en/blog/my-post`"
+ ALLOW_URL_TAXONOMY_FILTERS: "URL Taxonómia Szűrők"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Taxonómia alapú szűrés URL-ben: `/taxonomy:ertek`."
+ REDIRECT_DEFAULT_CODE: "Alapértelmezett átirányítási kód"
+ REDIRECT_DEFAULT_CODE_HELP: "HTTP státuszkód átirányításokhoz"
+ IGNORE_HIDDEN: "Rejtett fájlok mellőzése"
+ IGNORE_HIDDEN_HELP: "Minden állomány és mappa mellőzése, amely ponttal kezdődik"
+ WRAPPED_SITE: "Beágyazott weblap"
+ WRAPPED_SITE_HELP: "A témák/pluginek számára, hogy tudják a Grav be lett ágyazva más platformba"
+ FALLBACK_TYPES: "Engedélyezett alaptípusok"
+ FALLBACK_TYPES_HELP: "Engedélyezett fájlípusok, melyek elérhetőek oldal útvonalakból. Alapértelmezés szerint bármilyen támogatott médiatípus."
+ INLINE_TYPES: "Beágyazott alaptípusok"
+ INLINE_TYPES_HELP: "Azon fájltípusok listája, amelyek letöltés helyett megjelenítésre kerülnek"
+ APPEND_URL_EXT: "Kiterjesztés hozzáfűzése az URL-hez"
+ APPEND_URL_EXT_HELP: "Egyedi kiterjesztés hozzáadása az oldal URL-jéhez. Fontos, hogy így a Grav `..twig` formátumban várja a sablonokat"
+ PAGE_MODES: "Oldal Módok"
+ PAGE_TYPES: "Oldaltípusok"
+ ACCESS_LEVELS: "Hozzáférési Szintek"
+ GROUPS: "Csoportok"
+ GROUPS_HELP: "Csoportok listája, melyeknek tagja a felhasználó"
+ ADMIN_ACCESS: "Adminisztrátor Jogosultságok"
+ SITE_ACCESS: "Weboldalszintű Jogosultságok"
+ INVALID_SECURITY_TOKEN: "Érvénytelen Biztonsági Token"
+ ACTIVATE: "Aktiválás"
+ TWIG_UMASK_FIX: "Umask javítás"
+ TWIG_UMASK_FIX_HELP: "Alapértelmezés szerint a Twig a gyorsítótárazott fájlokat 0755 jogokkal hozza létre, ez javítja ezt 0775-re"
+ CACHE_PERMS: "Gyorsítótár-engedélyek"
+ CACHE_PERMS_HELP: "Alapértelmezés szerint a gyorsítótár mappába jogosultságok. Általában 0755 vagy 0775, beállításaitól függően"
+ REMOVE_SUCCESSFUL: "Sikeresek eltávolítása"
+ REMOVE_FAILED: "Sikertelenek eltávolítása"
+ HIDE_HOME_IN_URLS: "Kezdőoldal útvonal elrejtése az URL-ekben"
+ HIDE_HOME_IN_URLS_HELP: "Biztosítja, hogy az alapértelmezett útvonal a kezdőoldal alatt ne hivatkozzon a kezdőoldal szokásos útvonalára"
+ TWIG_FIRST: "Twig feldolgozása először"
+ TWIG_FIRST_HELP: "Ha engedélyezte a Twig oldalfeldolgozást, itt beállíthatja, hogy a Twig-et a markdown előtt vagy után dolgozza fel"
+ SESSION_SECURE: "Biztonságos"
+ SESSION_SECURE_HELP: "Ha ez be van jelölve, az ehhez a cookie-hoz tartozó kommunikáció kódolt átviteli csatornán mehet csak. FIGYELEM: Csak olyan oldal esetén engedélyezd, ami kizárólag HTTPS-en forgalmaz"
+ SESSION_HTTPONLY: "Csak HTTP"
+ SESSION_HTTPONLY_HELP: "Ha ez bejelölt, a cookie-kat csak HTTP-n keresztül lehet használni és JavaScript módosítás nem engedélyezett"
+ REVERSE_PROXY: "Fordított proxy"
+ REVERSE_PROXY_HELP: "Engedélyezd ezt, ha egy fordított proxy mögött vagy és probléma van a helytelen portokat tartalmazó URL-címek betöltésével"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Érvénytelen leírás, nem lehet menteni"
+ ADD_FOLDER: "Mappa hozzáadása"
+ PROXY_URL: "Proxy URL"
+ PROXY_URL_HELP: "Add meg a proxy gépnevét vagy IP címét és a portot"
+ NOTHING_TO_SAVE: "Nincs mit menteni"
+ FILE_ERROR_ADD: "Hiba történt a fájl hozzáadásakor"
+ FILE_ERROR_UPLOAD: "Hiba történt a fájl feltöltésekor"
+ FILE_UNSUPPORTED: "Nem támogatott fájltípus"
+ ADD_ITEM: "Elem hozzáadása"
+ FILE_TOO_LARGE: "A fájl túl nagy ahhoz, hogy feltölthessük. A maximálisan engedélyezett méret: %s a PHP beállítások szerint. Növelje meg a `post_max_size` PHP beállítást"
+ INSTALLING: "Telepítés"
+ LOADING: "Betöltés…"
+ DEPENDENCIES_NOT_MET_MESSAGE: "Elsőnek a következő függőségek kell teljesítenünk::"
+ ERROR_INSTALLING_PACKAGES: "Hiba történt a csomag(ok) telepítése közben"
+ INSTALLING_DEPENDENCIES: "Függőségek telepítése..."
+ INSTALLING_PACKAGES: "Csomag(ok) telepítése..."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Csomag(ok) sikeresen telepítve."
+ READY_TO_INSTALL_PACKAGES: "A csomag(ok) telepítésre készen áll(nak)"
+ PACKAGES_NOT_INSTALLED: "Nem telepített csomagok"
+ PACKAGES_NEED_UPDATE: "Már telepített, de régi csomagok"
+ PACKAGES_SUGGESTED_UPDATE: "Már telepített, nem elavult csomagok, melyekhez újabb frissítések állnak rendelkezésre"
+ REMOVE_THE: "%s eltávolítása"
+ CONFIRM_REMOVAL: "Biztosan törli ezt a(z) %s?"
+ REMOVED_SUCCESSFULLY: "%s sikeresen eltávolítva"
+ ERROR_REMOVING_THE: "Hiba történt %s eltávolítása közben"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "A következő függőségeket csak a(z) %s követeli meg, így amennyiben nem használjuk őket, eltávolíthatjuk őket közvetlenül innen."
+ READY_TO_UPDATE_PACKAGES: "A csomag(ok) frissítésre készen áll(nak)"
+ ERROR_UPDATING_PACKAGES: "Hiba történt a csomag(ok) frissítése közben"
+ UPDATING_PACKAGES: "Csomag(ok) frissítésére..."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Csomag(ok) sikeresen frissítve."
+ UPDATING: "Frissítés"
+ GPM_RELEASES: "GPM kiadások"
+ GPM_RELEASES_HELP: "Válassza a 'Teszt'-et a béta vagy tesztelési verziók telepítéséhez"
+ GPM_METHOD: "A külső beszerzés módja (GPM)"
+ GPM_METHOD_HELP: "Auto-ra állítva a Grav fopen-t használ, amennyiben az elérhető, ellenkező esetben tartalékként a cURL-t hívja meg. A többi opcióval kikényszeríthetjük egyikük állandó használatát."
+ GPM_VERIFY_PEER: "GPM peer távoli ellenőrzése (SSL)"
+ GPM_VERIFY_PEER_HELP: "Egyes csomagszolgáltatók a getgrav.org SSL tanúsítványának ellenőrzésekor megbuknak, és emiatt a GPM nem fog működni. Ilyen esetekben segít, ha kikapcsoljuk ezt a beállítást"
+ AUTO: "Auto"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabil"
+ TESTING: "Teszt"
+ FRONTMATTER_PROCESS_TWIG: "Twig leírás feldolgozása"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Amikor engedélyezve van, az oldal leíró részében Twig változókat lehet használni"
+ FRONTMATTER_IGNORE_FIELDS: "Leíró mezők figyelmen kívül hagyása"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Bizonyos leíró mezők tartalmazhatnak Twig-eket, de nem űrlapként kell feldolgozni őket"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "%s csomag sikeresen telepítve."
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "A szülő elem rendezése érvényes. Itt a rendezés nem elérhető"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Az oldal nem látható, a rendezés nem elérhető"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Az admin felületen keresztüli rendezés nem támogatott, mert több, mint 200 elem van"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Az oldalrendezés ezen az oldalon ki van kapcsolva, mert a Mappa Numerikus Előtag is ki van kapcsolva"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "Megyjegyzés: Amíg az oldal nincs elmentve, nem lehet médiafájlokat hozzáadni. Kattintson felül a 'Mentés'-re"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "Megjegyezés: Az oldalt menteni kell fájl feltöltése előtt."
+ DROP_FILES_HERE_TO_UPLOAD: "Ejtse erre a területre a fájlokat"
+ INSERT: "Beillesztés"
+ UNDO: "Visszavonás"
+ REDO: "Mégis"
+ HEADERS: "Fejléc"
+ BOLD: "Félkövér"
+ ITALIC: "Dőlt"
+ STRIKETHROUGH: "Áthúzott"
+ SUMMARY_DELIMITER: "Összefoglaló határoló"
+ LINK: "Link"
+ IMAGE: "Kép"
+ BLOCKQUOTE: "Idézet"
+ UNORDERED_LIST: "Rendezetlen lista"
+ ORDERED_LIST: "Rendezett lista"
+ EDITOR: "Szerkesztő"
+ PREVIEW: "Előnézet"
+ FULLSCREEN: "Teljes képernyő"
+ MODULAR: "Moduláris"
+ NON_ROUTABLE: "Nem route-olható"
+ NON_MODULAR: "Nem-moduláris"
+ NON_VISIBLE: "Nem látható"
+ NON_PUBLISHED: "Közzé nem tett"
+ CHARACTERS: "karakter"
+ PUBLISHING: "Közzététel"
+ NOTIFICATIONS: "Értesítések"
+ MEDIA_TYPES: "Médiatípusok"
+ IMAGE_OPTIONS: "Képbeállítások"
+ MIME_TYPE: "MIME-típus"
+ THUMB: "Bélyegkép"
+ TYPE: "Típus"
+ FILE_EXTENSION: "Fájlkiterjesztés"
+ LEGEND: "Oldal előzmények"
+ MEMCACHE_SERVER: "Memcache kiszolgáló"
+ MEMCACHE_SERVER_HELP: "Memcache kiszolgáló címe"
+ MEMCACHE_PORT: "Memcache port"
+ MEMCACHE_PORT_HELP: "A Memcache kiszolgáló portja"
+ MEMCACHED_SERVER: "Memcached kiszolgáló"
+ MEMCACHED_SERVER_HELP: "Memcached kiszolgáló címe"
+ MEMCACHED_PORT: "Memcached port"
+ MEMCACHED_PORT_HELP: "A Memcached kiszolgáló portja"
+ REDIS_SERVER: "Redis kiszolgáló"
+ REDIS_SERVER_HELP: "A Redis kiszolgáló címe"
+ REDIS_PORT: "Redis port"
+ REDIS_PORT_HELP: "A Redis kiszolgáló portja"
+ REDIS_PASSWORD: "Redis jelszó/titkos kulcs"
+ ALL: "Mind"
+ FROM: "ettől"
+ TO: "eddig"
+ RELEASE_DATE: "Megjelenési dátum"
+ SORT_BY: "Rendezés"
+ RESOURCE_FILTER: "Szűrés..."
+ FORCE_SSL: "SSL kényszerítése"
+ FORCE_SSL_HELP: "SSL kapcsolat globális kikényszerítése. Ha be van kapcsolva, a Grav a HTTP lekéréseket automatikusan HTTPS-re irányítja át"
+ NEWS_FEED: "Hírfolyam"
+ EXTERNAL_URL: "Külső URL-cím"
+ SESSION_PATH: "A munkamenet elérési útja"
+ SESSION_PATH_HELP: "Csak akkor használatos, ha egyedi bázis URL lett beállítva (az oldal domain-je / az almappa át lett írva)"
+ CUSTOM_BASE_URL: "Egyedi bázis URL"
+ CUSTOM_BASE_URL_HELP: "Akkor használatos, ha az oldal domain-je felülírandó, vagy a Grav sajátjától eltérő almappával dolgozunk.\nPélda: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Nem lehet használni a "%s"-t az oldalakon kívül.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'A fájlt %s nem lehet feltölteni: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'A fájl nem lehet áthelyezni innen %s ide "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Feltöltés megszakítása'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Biztosan meg akarod szakítani a fájlfeltöltést?'
+ DROPZONE_DEFAULT_MESSAGE: 'Húzd be ide a feltöltendő fájlt, vagy kattints erre a területre'
+ DROPZONE_FALLBACK_MESSAGE: 'A böngésződ nem támogatja drag''n''drop fájlfeltöltést.'
+ DROPZONE_FALLBACK_TEXT: 'Kérjük használd a tartalék űrlapot a fájlok feltöltéséhez (csakúgy, mint a régi szép időkben).'
+ DROPZONE_FILE_TOO_BIG: 'A fájl mérete túl nagy ({{filesize}}MiB). Maximális fájlméret: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Nem lehet feltölteni ilyen típusú fájlt."
+ DROPZONE_MAX_FILES_EXCEEDED: "Nem lehet feltölteni több fájlt."
+ DROPZONE_REMOVE_FILE: "Fájl eltávolítása"
+ DROPZONE_RESPONSE_ERROR: "A szerver {{statusCode}} kóddal válaszolt."
+ PREMIUM_PRODUCT: "Prémium"
+ ADMIN_CACHING: "Admin gyorsítótár engedélyezése"
+ ADMIN_CACHING_HELP: "Az admin felület gyorsítótárazása a weboldal frontend részétől függetlenül vezérelhető."
+ DESTINATION_NOT_SPECIFIED: "A cél meghatározatlan"
+ UPLOAD_ERR_NO_TMP_DIR: "Hiányzik az átmeneti mappa"
+ SESSION_SPLIT: "Munkamenet Felosztás"
+ SESSION_SPLIT_HELP: "Független megosztott munkamenetek a webhely és más bővítmények között (mint pl. admin)"
+ ERROR_FULL_BACKTRACE: "Teljes visszakövetés a hibaüzenetben"
+ ERROR_SIMPLE: "Egyszerű hiba"
+ ERROR_SYSTEM: "Rendszerhiba"
+ IMAGES_AUTO_FIX_ORIENTATION: "Képorientáció automatikus javítása"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Exif adatok alapján a kép automatikus helyreforgatása"
+ REDIS_SOCKET: "Redis socket"
+ REDIS_SOCKET_HELP: "A Redis socket"
+ NOT_SET: "Nincs beállítva"
+ PERMISSIONS: "Engedélyek"
+ NEVER_CACHE_TWIG: "Sose gyorsítótárazza a Twig-eket"
+ NEVER_CACHE_TWIG_HELP: "Csak a tartalmat gyorsítótárazza, a Twig minden alkalommal kiértékelődik.\nFigyelmen kívül hagyja a twig_first beállítást."
+ ALLOW_WEBSERVER_GZIP: "Webszerver Gzip engedélyezése"
+ ALLOW_WEBSERVER_GZIP_HELP: "Kikapcsolva alapértelmezettként. Ha engedélyezve van, a WebServer-konfigurált Gzip/Deflate tömörítés működni fog, de http kapcsolaton keresztül nem lehet bezárni mielőtt az onShutDown() esemény lassú oldalbetöltést okoz"
+ OFFLINE_WARNING: "A GPM kapcsolatot nem lehet létrehozni"
+ CLEAR_IMAGES_BY_DEFAULT: "Alapértelmezés szerint törölje a kép gyorsítótárát"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Alapértelmezés szerint a feldolgozott képek törlődnek az összes gyorsítótár törlésekor, de letiltható"
+ CLI_COMPATIBILITY: "CLI Kompatibilitás"
+ CLI_COMPATIBILITY_HELP: "Győződj meg róla, hogy csak a nem felejtő gyorsítótár-vezérlők vannak használatban (fájl, redis, memcache stb.)"
+ REINSTALL_PLUGIN: "Bővítmény Újratlepítése"
+ REINSTALL_THEME: "Téma Újratelepítése"
+ REINSTALL_THE: "%s Újratelepítése"
+ CONFIRM_REINSTALL: "Biztos vagy benne, hogy újra akarod telepíteni a(z) %s-t?"
+ REINSTALLED_SUCCESSFULLY: "%s újratelepítése sikeresen megtörtént"
+ ERROR_REINSTALLING_THE: "Hiba történt a(z) %s újratelepítése közben"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "%s csomag újratelepítése sikeresen megtörtént"
+ REINSTALLATION_FAILED: "Sikertelen újratelepítés"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "A telepített verzió nem a legfrissebb kiadás. A Tovább gombra kattintva, eltávolíthatod a jelenlegi verziót és telepítheted a legfrissebb elérhető kiadást"
+ TOOLS: "Eszközök"
+ DIRECT_INSTALL: "Közvetlen telepítése"
+ NO_PACKAGE_NAME: "A csomag neve nincs megadva"
+ PACKAGE_EXTRACTION_FAILED: "A csomag kitömörítése sikertelen"
+ NOT_VALID_GRAV_PACKAGE: "Nem érvényes Grav csomag"
+ NAME_COULD_NOT_BE_DETERMINED: "A név nem határozható meg"
+ CANNOT_OVERWRITE_SYMLINKS: "Nem lehet felülírni a symlinkeket"
+ ZIP_PACKAGE_NOT_FOUND: "Nem található ZIP archívum"
+ GPM_OFFICIAL_ONLY: "Csak hivatalos GPM"
+ GPM_OFFICIAL_ONLY_HELP: "Csak a hivatalos GPM repository-ból engedélyezett a közvetlen telepítés"
+ NO_CHILD_TYPE: "Nem tartozik alárendelt típus ehhez a rawroute-hoz"
+ SORTABLE_PAGES: "Csoportosítható oldalak:"
+ UNSORTABLE_PAGES: "Nem csoportosítható oldalak"
+ ADMIN_SPECIFIC_OVERRIDES: "Admin specifikus felülírások"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Alárendelt Megjelenítési Sorrend"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "A sorrend amiként ez az oldal aloldalai listázva legyenek az admin plugin 'Oldalak' menüpont alatt"
+ PWD_PLACEHOLDER: "komplex karakterlánc legalább 8 karakter hosszú"
+ PWD_REGEX: "Jelszó Regex"
+ PWD_REGEX_HELP: "A jelszónak legalább egy számot, egy nagybetűs és kis betűket, valamint legalább 8 vagy több karaktert kell tartalmaznia"
+ USERNAME_PLACEHOLDER: "csak kisbetűs karakterek, pl. 'admin'"
+ USERNAME_REGEX: "Felhasználónév Regex"
+ USERNAME_REGEX_HELP: "Alapértelmezés szerint: csak kisbetűk, számjegyek, kötőjelek és aláhúzásjelek használhatók. 3 - 16 karakter"
+ CONTENT_PADDING: "Tartalom padding"
+ CONTENT_PADDING_HELP: "Engedélyezd / Tiltsd le a tartalom padding-jét a tartalomterületen, hogy több helyet biztosíts"
+ ENABLE_AUTO_METADATA: "Automatikus metaadat az Exif-ből"
+ ENABLE_AUTO_METADATA_HELP: "Automatikusan létrehozhat metaadatfájlokat az exif információkkal rendelkező képekhez"
+ 2FA_TITLE: "Kétlépcsős Hitelesítés"
+ 2FA_INSTRUCTIONS: "##### Kétlépcsős Hitelesítés\nBeállítottad a **Kétlépcsős Hitelesítést** ehhez a fiókhoz. Kérlek használd a **Kétlépcsős Hitelesítés** applikációt, hogy beírd a **6 jegyű kódot** a bejelentkezési folyamat befejezéséhez. "
+ 2FA_LABEL: "Adminisztrátor Jogosultságok"
+ 2FA_FAILED: "Érvénytelen Kétlépcsős Hitelesítési kód, kérlek próbáld meg újra..."
+ 2FA_ENABLED: "Kétlépcsős Hitelesítés engedélyezve"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "Kétlépcsős Hitelesítési Titok"
+ 2FA_REGENERATE: "Újragenerálás"
+ VIEW_SITE_TIP: "Oldal megtekintése"
+ TOOLS_DIRECT_INSTALL_TITLE: "Grav csomagok közvetlen telepítése"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Csomag telepítése a Direct ZIP feltöltés használatával"
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Feltöltés és telepítés"
+ ROUTE_OVERRIDES: "Útvonal felülírása"
+ ROUTE_DEFAULT: "Alapértelmezett útvonal"
+ OPEN_NEW_TAB: "Megnyitás új lapon"
+ SESSION_INITIALIZE: "Munkamenet inicializálása"
+ STRICT_YAML_COMPAT: "YAML kompatibilitás"
+ STRICT_TWIG_COMPAT: "Twig kompatibilitás"
+ SCHEDULER: "Ütemező"
+ SCHEDULER_INSTALL_INSTRUCTIONS: "Telepítési útmutató"
+ SCHEDULER_INSTALLED_READY: "Telepítve és készen áll"
+ SCHEDULER_CRON_NA: "Nem elérhető"
+ SCHEDULER_NOT_ENABLED: "Inaktiválva"
+ SCHEDULER_SETUP: "Ütemező beállítása"
+ SCHEDULER_JOBS: "Egyéni Ütemezett feladatok"
+ SCHEDULER_STATUS: "Ütemező állapota"
+ SECURITY: "Biztonság"
+ XSS_SECURITY: "XSS biztonság a tartalomhoz"
+ XSS_WHITELIST_PERMISSIONS: "Whitelist engedélyek"
+ XSS_WHITELIST_PERMISSIONS_HELP: "Az ilyen jogosultságokkal rendelkező felhasználók a tartalom mentésekor átugorják az XSS szabályokat"
+ XSS_ON_EVENTS: "Események szűrése"
+ XSS_INVALID_PROTOCOLS: "Érvénytelen protokollok szűrése"
+ XSS_INVALID_PROTOCOLS_LIST: "Érvénytelen protokollok listája"
+ XSS_HTML_INLINE_STYLES: "Inline HTML stílusok szűrése"
+ XSS_DANGEROUS_TAGS: "Szűrje a veszélyes HTML címkéket"
+ XSS_DANGEROUS_TAGS_LIST: "Veszélyes HTML-címkék listája"
+ XSS_ONSAVE_ISSUE: "Mentés sikertelen: XSS problémát észleltünk..."
+ XSS_ISSUE: "ÉRTESÍTÉS A Grav potenciális XSS hibákat talált a(z) %s"
+ UPLOADS_SECURITY: "Biztonsági feltöltések"
+ UPLOADS_DANGEROUS_EXTENSIONS: "Veszélyes kiterjesztések"
+ UPLOADS_DANGEROUS_EXTENSIONS_HELP: "Blokkolja ezeket a kiterjesztéseket a feltöltött MIME típusoktól függetlenül"
+ REPORTS: "Jelentések"
diff --git a/user/plugins/admin/languages/id.yaml b/user/plugins/admin/languages/id.yaml
new file mode 100644
index 0000000..fd5517e
--- /dev/null
+++ b/user/plugins/admin/languages/id.yaml
@@ -0,0 +1,696 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Ini merupakan rilisan Beta! Gunakan ini di produksi dengan resiko anda sendiri..."
+ ADMIN_REPORT_ISSUE: "Menemukan masalah? Harap laporkan di Github."
+ EMAIL_FOOTER: "Ditenagai oleh Grav - The Modern Flat File CMS"
+ LOGIN_BTN: "Login"
+ LOGIN_BTN_FORGOT: "Lupa"
+ LOGIN_BTN_RESET: "Reset Password"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Kirim Petunjuk Pembuatan Password"
+ LOGIN_BTN_CLEAR: "Bersihkan Form"
+ LOGIN_BTN_CREATE_USER: "Tambah Pengguna"
+ LOGIN_LOGGED_IN: "Anda telah berhasil login"
+ LOGIN_FAILED: "Login gagal"
+ LOGGED_OUT: "Anda telah logout"
+ RESET_NEW_PASSWORD: "Silakan masukkan password baru …"
+ RESET_LINK_EXPIRED: "Tautan setel ulang sudah tidak berlaku, silakan coba lagi"
+ RESET_PASSWORD_RESET: "Kata sandi telah diatur ulang"
+ RESET_INVALID_LINK: "Anda menggunakan tautan pembuatan password yang tidak valid, silakan coba lagi"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Petunjuk untuk menyetel ulang password telah dikirim ke alamat email Anda"
+ FORGOT_FAILED_TO_EMAIL: "Gagal mengirim email instruksi, silakan coba lagi nanti"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Tidak bisa membuat ulang password untuk %s, alamat email belum diisi"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Pengguna dengan username %s tidak ada"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Tidak dapat membuat ulang password. Situs ini belum dikonfigurasi untuk mengirim email"
+ FORGOT_EMAIL_SUBJECT: "Permintaan Reset Password %s"
+ FORGOT_EMAIL_BODY: "
Reset Password
Halo %1$s,
Permintaan dibuat pada %4$s untuk membuat ulang password.
Atau, salin URL berikut ke baris alamat browser Anda:
%2$s
< br / > Salam, < br / > < br / >%3$s
"
+ MANAGE_PAGES: "Kelola Halaman"
+ CONFIGURATION: "Konfigurasi"
+ PAGES: "Halaman"
+ PLUGINS: "Plugin"
+ PLUGIN: "Plugin"
+ THEMES: "Tema"
+ LOGOUT: "Keluar"
+ BACK: "Kembali"
+ NEXT: "Berikutnya"
+ PREVIOUS: "Sebelumnya"
+ ADD_PAGE: "Tambah Halaman"
+ ADD_MODULAR: "Tambahkan Modular"
+ MOVE: "Pindahkan"
+ DELETE: "Hapus"
+ VIEW: "Lihat"
+ SAVE: "Simpan"
+ NORMAL: "Normal"
+ EXPERT: "Ahli"
+ EXPAND_ALL: "Bentangkan semua"
+ COLLAPSE_ALL: "Tutup Semua"
+ ERROR: "Eror"
+ CLOSE: "Tutup"
+ CANCEL: "Batalkan"
+ CONTINUE: "Lanjukan"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Konfirmasi"
+ MODAL_CHANGED_DETECTED_TITLE: "Terdeteksi Perubahan"
+ MODAL_CHANGED_DETECTED_DESC: "Anda memiliki perubahan yang belum disimpan. Apakah Anda yakin Anda ingin meninggalkan tanpa menyimpan?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Konfirmasi"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Apakah Anda yakin Anda ingin menghapus file ini? Tindakan ini tidak dapat dikembalikan."
+ ADD_FILTERS: "Tambah Filter"
+ SEARCH_PAGES: "Cari Halaman"
+ VERSION: "Versi"
+ WAS_MADE_WITH: "Dibuat dengan"
+ BY: "Oleh"
+ UPDATE_THEME: "Perbarui Tema"
+ UPDATE_PLUGIN: "Update Plugin"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "tema ini sudah tersedia"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "plugin ini sudah tersedia"
+ AUTHOR: "Penulis"
+ HOMEPAGE: "Homepage"
+ DEMO: "Demo"
+ BUG_TRACKER: "Bug Tracker"
+ KEYWORDS: "Keyword"
+ LICENSE: "Lisensi"
+ DESCRIPTION: "Deskripsi"
+ README: "Readme"
+ REMOVE_THEME: "Hapus tema"
+ INSTALL_THEME: "Instal tema"
+ THEME: "Tema"
+ BACK_TO_THEMES: "Kembali ke tema"
+ BACK_TO_PLUGINS: "Kembali ke plugin"
+ CHECK_FOR_UPDATES: "Periksa Update"
+ ADD: "Tambah"
+ CLEAR_CACHE: "Hapus Cache"
+ CLEAR_CACHE_ALL_CACHE: "Semua Cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Hanya Assests"
+ CLEAR_CACHE_IMAGES_ONLY: "Hanya Images"
+ CLEAR_CACHE_CACHE_ONLY: "Hanya Cache"
+ CLEAR_CACHE_TMP_ONLY: "Hanya Tmp"
+ DASHBOARD: "Dashboard"
+ UPDATES_AVAILABLE: "Tersedia Update"
+ DAYS: "Hari"
+ UPDATE: "Update"
+ BACKUP: "Backup"
+ STATISTICS: "Statistik"
+ TODAY: "Hari ini"
+ WEEK: "Pekan"
+ MONTH: "Bulan"
+ LATEST_PAGE_UPDATES: "Update Halaman Terbaru"
+ MAINTENANCE: "Pemeliharaan"
+ UPDATED: "Diperbarui"
+ MON: "Sen"
+ TUE: "Sel"
+ WED: "Rab"
+ THU: "Kam"
+ FRI: "Jum"
+ SAT: "Sab"
+ SUN: "Min"
+ COPY: "Salin"
+ EDIT: "Edit"
+ CREATE: "Buat"
+ GRAV_ADMIN: "Grav Admin"
+ GRAV_OFFICIAL_PLUGIN: "Plugin Resmi Grav"
+ GRAV_OFFICIAL_THEME: "Tema Resmi Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Plugin ini bertaut simbolik. Update tidak akan terdeteksi."
+ THEME_SYMBOLICALLY_LINKED: "Tema ini berkait secara simbolis. Perbaruan tidak akan terdeteksi"
+ REMOVE_PLUGIN: "Hapus Plugin"
+ INSTALL_PLUGIN: "Instal plugin"
+ AVAILABLE: "Tersedia"
+ INSTALLED: "Terpasang"
+ INSTALL: "Instal"
+ ACTIVE_THEME: "Tema aktif"
+ SWITCHING_TO: "Beralih ke"
+ SWITCHING_TO_DESCRIPTION: "Dengan beralih ke tema yang berbeda, tidak ada jaminan bahwa semua tata letak halaman akan didukung, yang berpotensi menyebabkan kesalahan ketika mencoba untuk memuat halaman."
+ SWITCHING_TO_CONFIRMATION: "Apakah Anda ingin melanjutkan dan beralih ke tema ini"
+ CREATE_NEW_USER: "Buat Pengguna Baru"
+ REMOVE_USER: "Hapus Pengguna"
+ ACCESS_DENIED: "Akses ditolak"
+ ACCOUNT_NOT_ADMIN: "akun anda tidak memiliki akses administrator"
+ PHP_INFO: "PHP Info"
+ INSTALLER: "Installer"
+ AVAILABLE_THEMES: "Tema yang tersedia"
+ AVAILABLE_PLUGINS: "Plugin yang tersedia"
+ INSTALLED_THEMES: "Tema Terpasang"
+ INSTALLED_PLUGINS: "Plugin Terpasang"
+ BROWSE_ERROR_LOGS: "Lihat Pesan Kesalahan"
+ SITE: "Situs"
+ INFO: "Info"
+ SYSTEM: "Sistem"
+ USER: "Pengguna"
+ ADD_ACCOUNT: "Tambah Akun"
+ SWITCH_LANGUAGE: "Ganti Bahasa"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Plugin berhasil diaktifkan"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Plugin berhasil dimatikan"
+ SUCCESSFULLY_CHANGED_THEME: "Tema default berhasil diubah"
+ INSTALLATION_FAILED: "Instalasi gagal"
+ INSTALLATION_SUCCESSFUL: "Instalasi berhasil"
+ UNINSTALL_FAILED: "Uninstall gagal"
+ UNINSTALL_SUCCESSFUL: "Uninstall berhasil"
+ SUCCESSFULLY_SAVED: "Berhasil disimpan"
+ SUCCESSFULLY_COPIED: "Berhasil disalin"
+ REORDERING_WAS_SUCCESSFUL: "Penyusunan ulang berhasil"
+ SUCCESSFULLY_DELETED: "Berhasil dihapus"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Berhasil beralih bahasa"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Anda tidak memiliki izin yang cukup untuk tugas"
+ CACHE_CLEARED: "Cache dibersihkan"
+ METHOD: "Metode"
+ ERROR_CLEARING_CACHE: "Ada kesalahan membersihkan cache"
+ AN_ERROR_OCCURRED: "Terjadi kesalahan"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Backup anda siap diunduh"
+ DOWNLOAD_BACKUP: "Download Backup"
+ PAGES_FILTERED: "Halaman yang disaring"
+ NO_PAGE_FOUND: "Tidak ada halaman yang ditemukan"
+ INVALID_PARAMETERS: "Parameter tidak valid"
+ NO_FILES_SENT: "Tidak ada file yang dikirimkan"
+ EXCEEDED_FILESIZE_LIMIT: "Melebihi batas ukuran file konfigurasi PHP"
+ UNKNOWN_ERRORS: "Kesalahan tak dikenal"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Melebihi batas ukuran file konfigurasi Grav"
+ UNSUPPORTED_FILE_TYPE: "Jenis file tidak didukung"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Gagal memindahkan file yang diunggah"
+ FILE_UPLOADED_SUCCESSFULLY: "File berhasil diunggah"
+ FILE_DELETED: "File dihapus"
+ FILE_COULD_NOT_BE_DELETED: "File tidak dapat dihapus"
+ FILE_NOT_FOUND: "File tidak ditemukan"
+ NO_FILE_FOUND: "Tidak ada file yang ditemukan"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav berhasil diperbarui ke"
+ GRAV_UPDATE_FAILED: "Update Grav gagal"
+ EVERYTHING_UPDATED: "Semuanya sudah diperbarui"
+ UPDATES_FAILED: "Update gagal"
+ AVATAR_BY: "Avatar oleh"
+ AVATAR_UPLOAD_OWN: "Atau upload sendiri..."
+ LAST_BACKUP: "Backup Terakhir"
+ FULL_NAME: "Nama lengkap"
+ USERNAME: "Username"
+ EMAIL: "Email"
+ USERNAME_EMAIL: "Username atau Email"
+ PASSWORD: "Password"
+ PASSWORD_CONFIRM: "Ulangi Password"
+ TITLE: "Judul"
+ LANGUAGE: "Bahasa"
+ ACCOUNT: "Akun"
+ EMAIL_VALIDATION_MESSAGE: "Harus alamat email yang valid"
+ PASSWORD_VALIDATION_MESSAGE: "Password harus mengandung setidaknya satu angka, satu huruf besar dan huruf kecil, dan minimal 8 karakter"
+ LANGUAGE_HELP: "Jadikan bahasa favorit"
+ MEDIA: "Media"
+ DEFAULTS: "Default"
+ SITE_TITLE: "Judul Situs"
+ SITE_TITLE_PLACEHOLDER: "Judul situs keseluruhan"
+ SITE_TITLE_HELP: "Judul standar situs Anda, biasanya digunakan dalam tema"
+ SITE_DEFAULT_LANG: "Bahasa default"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Bahasa default yang digunakan dalam tag tema"
+ SITE_DEFAULT_LANG_HELP: "Bahasa default yang digunakan dalam tag tema"
+ DEFAULT_AUTHOR: "Penulis default"
+ DEFAULT_AUTHOR_HELP: "Default nama penulis, biasanya digunakan dalam tema atau konten halaman"
+ DEFAULT_EMAIL: "Email default"
+ DEFAULT_EMAIL_HELP: "Standar email sebagai referensi dalam tema atau halaman"
+ TAXONOMY_TYPES: "Jenis taksonomi"
+ TAXONOMY_TYPES_HELP: "Taksonomi jenis harus didefinisikan di sini jika Anda ingin menggunakannya dalam halaman"
+ PAGE_SUMMARY: "Ringkasan Halaman"
+ ENABLED: "Aktif"
+ ENABLED_HELP: "Aktifkan ringkasan halaman (ringkasan sama dengan isi halaman)"
+ 'YES': "Ya"
+ 'NO': "Tidak"
+ SUMMARY_SIZE: "Ukuran Ringkasan"
+ SUMMARY_SIZE_HELP: "Jumlah karakter dari halaman yang digunakan sebagai konten ringkasan"
+ FORMAT: "Format"
+ FORMAT_HELP: "pendek = menggunakan pemisah atau ukuran; panjang = pemisah ringkasan akan diabaikan"
+ SHORT: "Pendek"
+ LONG: "Panjang"
+ DELIMITER: "Pemisah"
+ DELIMITER_HELP: "Pemisah ringkasan (default ' ===')"
+ METADATA: "Metadata"
+ METADATA_HELP: "Nilai default metadata yang akan ditampilkan pada setiap halaman kecuali ditimpa oleh Halaman"
+ NAME: "Nama"
+ CONTENT: "Konten"
+ REDIRECTS_AND_ROUTES: "Pengalihan & Rute"
+ CUSTOM_REDIRECTS: "Pengalihan kustom"
+ CUSTOM_REDIRECTS_HELP: "rute pengalihan ke halaman lain. Penggantian Regex Standar bisa berlaku"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/alias/anda"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/pengalihan/anda"
+ CUSTOM_ROUTES: "Rute kustom"
+ CUSTOM_ROUTES_HELP: "rute sebagai alias ke halaman lain. Penggantian Regex Standar bisa berlaku"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/alias/anda"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/rute/anda"
+ FILE_STREAMS: "Stream file"
+ DEFAULT: "Default"
+ PAGE_MEDIA: "Media Halaman"
+ OPTIONS: "Opsi"
+ PUBLISHED: "Diterbitkan"
+ PUBLISHED_HELP: "Secara default, halaman akan diterbitkan kecuali anda secara eksplisit menetapkan published: false atau lewat publish_date yang di masa depan, atau unpublish_date di masa lalu"
+ DATE: "Tanggal"
+ DATE_HELP: "Variabel tanggal memungkinkan Anda untuk secara khusus menetapkan tanggal untuk Halaman ini."
+ PUBLISHED_DATE: "Tanggal publikasi"
+ PUBLISHED_DATE_HELP: "Menyediakan fasilitas untuk mempublikasi pada tanggal tertentu."
+ UNPUBLISHED_DATE: "Tanggal Penghentian Publikasi"
+ UNPUBLISHED_DATE_HELP: "Menyediakan fasilitas untuk menghentikan publikasi pada tanggal tertentu."
+ ROBOTS: "Robots"
+ TAXONOMIES: "Taksonomi"
+ TAXONOMY: "Taksonomi"
+ ADVANCED: "Tingkat lanjut"
+ SETTINGS: "Pengaturan"
+ FOLDER_NUMERIC_PREFIX: "Awalan Numerik Folder"
+ FOLDER_NUMERIC_PREFIX_HELP: "Awalan numerik untuk urutan secara manual dan menunjukkan visibilitas"
+ FOLDER_NAME: "Nama Folder"
+ FOLDER_NAME_HELP: "Nama folder yang akan disimpan dalam filesystem untuk halaman ini"
+ PARENT: "Induk"
+ DEFAULT_OPTION_ROOT: "- Root -"
+ DEFAULT_OPTION_SELECT: "- Pilih -"
+ DISPLAY_TEMPLATE: "Tampilan Template"
+ DISPLAY_TEMPLATE_HELP: "Jenis halaman yang diterjemahkan dimana template twig merender Halaman"
+ BODY_CLASSES: "Kelas Body"
+ ORDERING: "Urutan"
+ PAGE_ORDER: "Urutan halaman"
+ OVERRIDES: "Timpa"
+ MENU: "Menu"
+ MENU_HELP: "String yang akan digunakan dalam menu. Jika tidak diisi, akan menggunakan judul."
+ SLUG: "Slug"
+ SLUG_HELP: "Variabel slug memungkinkan Anda untuk secara khusus mengatur bagian URL halaman "
+ SLUG_VALIDATE_MESSAGE: "Slug hanya boleh berisi huruf kecil huruf dan tanda minus"
+ PROCESS: "Proses"
+ PROCESS_HELP: "Mengontrol bagaimana halaman diproses. Dapat diatur per halaman juga global"
+ DEFAULT_CHILD_TYPE: "Jenis turunan default"
+ USE_GLOBAL: "Gunakan Global"
+ ROUTABLE: "Routable"
+ ROUTABLE_HELP: "Jika Halaman ini dapat dicapai dengan URL"
+ CACHING: "Caching"
+ VISIBLE: "Terlihat"
+ VISIBLE_HELP: "Menentukan apakah halaman muncul dalam navigasi."
+ DISABLED: "Nonaktif"
+ ITEMS: "Item"
+ ORDER_BY: "Urutkan Berdasarkan"
+ ORDER: "Urutan"
+ FOLDER: "Folder"
+ ASCENDING: "Naik"
+ DESCENDING: "Turun"
+ ADD_MODULAR_CONTENT: "Tambah Konten Modular"
+ PAGE_TITLE: "Judul Halaman"
+ PAGE_TITLE_HELP: "Judul halaman ini"
+ PAGE: "Halaman"
+ MODULAR_TEMPLATE: "Modular Template"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Nama File"
+ PARENT_PAGE: "Halaman induk"
+ HOME_PAGE: "Halaman Depan"
+ HOME_PAGE_HELP: "Halaman yang akan digunakan Grav sebagai halaman muka default"
+ DEFAULT_THEME: "Tema default"
+ DEFAULT_THEME_HELP: "Mengatur tema default yang akan digunakan (defaultnya adalah Antimatter)"
+ TIMEZONE: "Zona Waktu"
+ TIMEZONE_HELP: "Gantikan zona waktu server default"
+ SHORT_DATE_FORMAT: "Fomat tampilan tanggal pendek"
+ SHORT_DATE_FORMAT_HELP: "Menentukan format tanggal pendek yang digunakan tema"
+ LONG_DATE_FORMAT: "Format tampilan format tanggal panjang"
+ LONG_DATE_FORMAT_HELP: "Menentukan format tanggal panjang yang digunakan tema"
+ DEFAULT_ORDERING: "Pengurutan default"
+ DEFAULT_ORDERING_HELP: "Halaman dalam daftar akan dibuat dengan urutan ini kecuali dibuat berbeda"
+ DEFAULT_ORDERING_DEFAULT: "Default - menurut nama folder"
+ DEFAULT_ORDERING_FOLDER: "Folder - menurut nama folder tanpa awalan"
+ DEFAULT_ORDERING_TITLE: "Judul - berdasar pada bagian judul dalam header"
+ DEFAULT_ORDERING_DATE: "Tanggal - berdasarkan bagian tanggal dalam header"
+ DEFAULT_ORDER_DIRECTION: "Arah urutan default"
+ DEFAULT_ORDER_DIRECTION_HELP: "Arah halaman dalam daftar"
+ DEFAULT_PAGE_COUNT: "Jumlah halaman default"
+ DEFAULT_PAGE_COUNT_HELP: "Jumlah halaman maksimal secara default dalam daftar"
+ DATE_BASED_PUBLISHING: "Publikasi berbasis tanggal"
+ DATE_BASED_PUBLISHING_HELP: "Otomatis (tidak)terbitkan posting menurut tanggalnya"
+ EVENTS: "Events"
+ EVENTS_HELP: "Aktifkan atau Non-aktifkan event tertentu. Menonaktifkan ini bisa merusak plugin"
+ REDIRECT_DEFAULT_ROUTE: "Rute default pengalihan"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Otomatis alihkan ke rute default halaman "
+ LANGUAGES: "Bahasa"
+ SUPPORTED: "Didukung"
+ SUPPORTED_HELP: "Daftar terpisahkan koma dari kode bahasa 2 huruf (misalnya 'id,en,fr')"
+ TRANSLATIONS_ENABLED: "Terjemahan diaktifkan"
+ TRANSLATIONS_ENABLED_HELP: "Mendukung terjemahan dalam Grav, plugin, dan ekstensi"
+ TRANSLATIONS_FALLBACK: "Terjemahan alternatif"
+ TRANSLATIONS_FALLBACK_HELP: "Buka terjemahan yang ada jika bahasa yang aktif tidak mmeiliki terjemahan"
+ ACTIVE_LANGUAGE_IN_SESSION: "Bahasa yang aktif dalam sesi"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Simpan bahasa aktif dalam sesi"
+ HTTP_HEADERS: "Header HTTP"
+ EXPIRES: "Berakhir"
+ EXPIRES_HELP: "Menetapkan header expire. Nilai adalah dalam detik."
+ CACHE_CONTROL: "HTTP Cache-Control"
+ CACHE_CONTROL_HELP: "Mengatur nilai cache-control seperti 'no-cache, no-store, must-revalidate'"
+ LAST_MODIFIED: "Modifikasi terakhir"
+ LAST_MODIFIED_HELP: "Menetapan header Las Modified yang bisa membantu mengoptimalkan caching proxy dan browser"
+ ETAG: "ETag"
+ ETAG_HELP: "Menetapkan header ETag untuk membantu identifikasi saat halaman diperbarui"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Mengatur header ' Vary: Accept Encoding' untuk membantu proxy dan CDN caching"
+ MARKDOWN_EXTRA_HELP: "Mengaktifkan dukungan Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ AUTO_LINE_BREAKS: "Jeda baris auto"
+ AUTO_LINE_BREAKS_HELP: "Aktifkan dukungan untuk baris otomatis istirahat dalam penurunan harga"
+ AUTO_URL_LINKS: "Link URL otomatis"
+ AUTO_URL_LINKS_HELP: "Aktifkan konversi otomatis URL ke dalam HTML hyperlink"
+ ESCAPE_MARKUP: "Melarikan diri markup"
+ ESCAPE_MARKUP_HELP: "Melarikan diri tag markup ke dalam entitas HTML"
+ CACHING_HELP: "Global ON / OFF untuk mengaktifkan / menonaktifkan Grav caching"
+ CACHE_CHECK_METHOD: "Metode pemeriksaan Cache"
+ CACHE_CHECK_METHOD_HELP: "Select the method that Grav uses to check if page files have been modified."
+ CACHE_DRIVER: "Driver Cache"
+ CACHE_DRIVER_HELP: "Pilih yang tembolok pengemudi Grav harus menggunakan. 'Auto Detect' mencoba untuk menemukan yang terbaik untuk Anda"
+ CACHE_PREFIX: "Awalan Cache"
+ CACHE_PREFIX_HELP: "Pengidentifikasi untuk bagian dari Grav kunci. Jangan mengubah kecuali Anda tahu apa yang Anda lakukan."
+ CACHE_PREFIX_PLACEHOLDER: "Berasal dari URL dasar (override dengan memasukkan string acak)"
+ LIFETIME: "Seumur hidup"
+ LIFETIME_HELP: "Menetapkan seumur hidup cache pada detik. 0 = tak terbatas"
+ GZIP_COMPRESSION: "Kompresi Gzip"
+ GZIP_COMPRESSION_HELP: "Aktifkan Gzip kompresi Grav halaman untuk peningkatan kinerja."
+ TWIG_TEMPLATING: "Ranting Templating"
+ TWIG_CACHING: "Ranting caching"
+ TWIG_CACHING_HELP: "Mengontrol mekanisme caching Ranting. Meninggalkan ini diaktifkan untuk kinerja terbaik."
+ TWIG_DEBUG: "Ranting men-debug"
+ TWIG_DEBUG_HELP: "Memungkinkan pilihan untuk tidak memuat ekstensi Ranting Debugger"
+ DETECT_CHANGES: "Mendeteksi perubahan"
+ DETECT_CHANGES_HELP: "Ranting otomatis akan mengkompilasi ulang cache ranting jika mendeteksi perubahan di ranting template"
+ AUTOESCAPE_VARIABLES: "Variabel autoescape"
+ AUTOESCAPE_VARIABLES_HELP: "Autoescapes semua variabel. Hal ini akan merusak situs Anda kemungkinan besar"
+ ASSETS: "Aset"
+ CSS_PIPELINE: "CSS pipeline"
+ CSS_PIPELINE_HELP: "Pipa CSS adalah penyatuan beberapa sumber CSS ke dalam satu file"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Sertakan eksternal dalam pipa CSS"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "URL eksternal kadang-kadang memiliki referensi relatif berkas dan tidak harus pipelined"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Pipa CSS membuat pertama"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Membuat pipa CSS sebelum referensi CSS lain yang tidak termasuk"
+ CSS_MINIFY: "CSS mengecilkan"
+ CSS_MINIFY_HELP: "Mengecilkan CSS selama pipelining"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "CSS mengecilkan menimpa Windows"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Mengecilkan Override untuk platform Windows. Palsu secara default karena ThreadStackSize"
+ CSS_REWRITE: "Menulis ulang CSS"
+ CSS_REWRITE_HELP: "Menulis ulang URL-URL relatif CSS selama pipelining"
+ JAVASCRIPT_PIPELINE: "Pipa JavaScript"
+ JAVASCRIPT_PIPELINE_HELP: "Pipa JS adalah penyatuan beberapa sumber JS ke dalam satu file"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Sertakan eksternal dalam pipa JS"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "URL eksternal kadang-kadang memiliki referensi relatif berkas dan tidak harus pipelined"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Pipa JS membuat pertama"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Membuat pipa JS sebelum referensi JS lainnya yang tidak termasuk"
+ JAVASCRIPT_MINIFY: "JavaScript mengecilkan"
+ JAVASCRIPT_MINIFY_HELP: "Mengecilkan JS selama pipelining"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Aktifkan cap waktu pada aset"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Aktifkan cap waktu aset"
+ COLLECTIONS: "Koleksi"
+ ERROR_HANDLER: "Perdagangan error"
+ DISPLAY_ERRORS: "Menampilkan kesalahan"
+ DISPLAY_ERRORS_HELP: "Menampilkan halaman kesalahan bergaya backtrace penuh"
+ LOG_ERRORS: "Log kesalahan"
+ LOG_ERRORS_HELP: "Log kesalahan ke folder / log"
+ DEBUGGER: "Debugger"
+ DEBUGGER_HELP: "Aktifkan Grav debugger dan mengikuti pengaturan"
+ DEBUG_TWIG: "Debug Ranting"
+ DEBUG_TWIG_HELP: "Aktifkan debugging dari Ranting template"
+ SHUTDOWN_CLOSE_CONNECTION: "Hubungan dekat Shutdown"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Menutup koneksi sebelum memanggil onShutdown (). palsu untuk debugging"
+ DEFAULT_IMAGE_QUALITY: "Kualitas gambar default"
+ DEFAULT_IMAGE_QUALITY_HELP: "Kualitas gambar standar yang digunakan ketika resampling atau caching gambar (85%)"
+ CACHE_ALL: "Cache semua gambar"
+ CACHE_ALL_HELP: "Menjalankan semua gambar melalui kelabu 's cache sistem bahkan jika mereka memiliki manipulasi media tidak"
+ IMAGES_DEBUG: "Gambar men-debug watermark"
+ IMAGES_DEBUG_HELP: "Tampilkan overlay di atas gambar yang menunjukkan kedalaman pixel gambar ketika bekerja dengan retina misalnya"
+ UPLOAD_LIMIT: "File upload batas"
+ UPLOAD_LIMIT_HELP: "Mengatur ukuran upload maksimum dalam bytes (0 adalah tidak terbatas)"
+ ENABLE_MEDIA_TIMESTAMP: "Aktifkan cap waktu pada media"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Menambahkan catatan waktu berdasarkan tanggal terakhir dimodifikasi untuk setiap item media yang"
+ SESSION: "Sesi"
+ SESSION_ENABLED_HELP: "Aktifkan dukungan sesi dalam Grav"
+ TIMEOUT: "Waktu habis"
+ TIMEOUT_HELP: "Menetapkan batas waktu sesi di detik"
+ SESSION_NAME_HELP: "Pengenal yang digunakan untuk membentuk nama cookie sesi"
+ ABSOLUTE_URLS: "URL mutlak"
+ ABSOLUTE_URLS_HELP: "URL absolut atau relatif untuk `base_url`"
+ PARAMETER_SEPARATOR: "Pemisah parameter"
+ PARAMETER_SEPARATOR_HELP: "Pemisah untuk parameter yang dikirimkan yang dapat diubah untuk Apache pada Windows"
+ TASK_COMPLETED: "Tugas selesai"
+ EVERYTHING_UP_TO_DATE: "Semuanya telah up-to-date"
+ UPDATES_ARE_AVAILABLE: "Update tersedia"
+ IS_AVAILABLE_FOR_UPDATE: "tersedia untuk update"
+ IS_NOW_AVAILABLE: "kini tersedia"
+ CURRENT: "Arus"
+ UPDATE_GRAV_NOW: "Update Grav Now"
+ GRAV_SYMBOLICALLY_LINKED: "Grav adalah simbolis terkait. Meng-upgrade tidak akan tersedia"
+ UPDATING_PLEASE_WAIT: "Memperbarui... harap tunggu, men-download"
+ OF_THIS: "ini"
+ OF_YOUR: "anda"
+ HAVE_AN_UPDATE_AVAILABLE: "memiliki update yang tersedia"
+ SAVE_AS: "Simpan sebagai"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Apakah Anda yakin ingin menghapus halaman ini dan semua anak-anaknya? Jika halaman diterjemahkan dalam bahasa lain, yang terjemahan akan disimpan dan harus dihapus secara terpisah. Jika tidak folder halaman akan dihapus bersama dengan sublaman nya. Tindakan ini tidak bisa dibatalkan."
+ AND: "dan"
+ UPDATE_AVAILABLE: "Update tersedia"
+ METADATA_KEY: "Key (misalnya 'Kata Kunci')"
+ METADATA_VALUE: "Nilai (e.g. 'Blog, Grav')"
+ USERNAME_HELP: "Nama pengguna harus antara 3 dan 16 karakter, termasuk huruf kecil, angka, garis bawah, dan tanda hubung. Huruf besar, spasi, dan karakter khusus tidak diperbolehkan"
+ FULLY_UPDATED: "Diperbarui sepenuhnya"
+ SAVE_LOCATION: "Simpan lokasi"
+ PAGE_FILE: "Template Halaman"
+ PAGE_FILE_HELP: "Template halaman nama file, dan secara default template tampilan halaman ini"
+ NO_USER_ACCOUNTS: "Tidak ada akun pengguna yang ditemukan, buat satu terlebih dahulu..."
+ REDIRECT_TRAILING_SLASH: "Pengalihan membuntuti garis miring"
+ REDIRECT_TRAILING_SLASH_HELP: "Lakukan pengalihan 301 dan bukannya menangani URI membuntuti garis miring dengan transparan."
+ DEFAULT_DATE_FORMAT: "Format tanggal Halaman"
+ DEFAULT_DATE_FORMAT_HELP: "Format tanggal halaman digunakan oleh Grav. Secara default, upaya Grav untuk menebak tanggal format, namun Anda dapat sebutkan format yang menggunakan PHP tanggal sintaks (misalnya: H:i Y-m-d)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Tebak secara otomatis"
+ IGNORE_FILES: "Mengabaikan berkas"
+ IGNORE_FILES_HELP: "File tertentu untuk mengabaikan saat memproses halaman"
+ IGNORE_FOLDERS: "Abaikan folder"
+ IGNORE_FOLDERS_HELP: "Folder tertentu untuk mengabaikan saat memproses halaman"
+ HTTP_ACCEPT_LANGUAGE: "Mengatur bahasa dari browser"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Anda dapat memilih untuk mencoba untuk mengatur bahasa berdasarkan `tag header http_accept_language` di browser"
+ OVERRIDE_LOCALE: "Mengesampingkan lokal"
+ OVERRIDE_LOCALE_HELP: "Menimpa pengaturan lokal di PHP didasarkan pada bahasa saat ini"
+ REDIRECT: "Halaman redirect"
+ REDIRECT_HELP: "Masukkan rute halaman atau URL eksternal untuk halaman ini untuk mengarahkan ke. misalnya `/ beberapa / route` atau` http: // somesite.com`"
+ PLUGIN_STATUS: "Plugin status"
+ INCLUDE_DEFAULT_LANG: "Sertakan bahasa default"
+ INCLUDE_DEFAULT_LANG_HELP: "Ini akan menambah semua URL dalam bahasa default dengan bahasa default. misalnya '/ en/blog/my-post'"
+ ALLOW_URL_TAXONOMY_FILTERS: "Penyaring taksonomi URL"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Koleksi berdasarkan halaman memungkinkan Anda untuk menyaring melalui `/ taksonomi: nilai`."
+ REDIRECT_DEFAULT_CODE: "Kode redirect standar"
+ REDIRECT_DEFAULT_CODE_HELP: "Kode status HTTP digunakan untuk pengalihan"
+ IGNORE_HIDDEN: "Abaikan disembunyikan"
+ IGNORE_HIDDEN_HELP: "Mengabaikan semua file dan folder yang dimulai dengan DOT sebuah"
+ WRAPPED_SITE: "Situs dibungkus"
+ WRAPPED_SITE_HELP: "Untuk tema / plugin untuk mengetahui apakah Grav dibungkus oleh platform lain"
+ FALLBACK_TYPES: "Diizinkan jenis fallback"
+ FALLBACK_TYPES_HELP: "Allowed file types that can be found if accessed via Page route. Defaults to any supported media type."
+ INLINE_TYPES: "Jenis mundur inline"
+ INLINE_TYPES_HELP: "Daftar jenis file yang harus ditampilkan inline bukan diunduh"
+ APPEND_URL_EXT: "Menambahkan ekstensi URL"
+ APPEND_URL_EXT_HELP: "Akan menambahkan ekstensi kustom untuk URL Page. Catatan, ini berarti Grav akan mencari ` . .twig` Template"
+ PAGE_MODES: "Metode halaman"
+ PAGE_TYPES: "Jenis halaman"
+ ACCESS_LEVELS: "Tingkat akses"
+ GROUPS: "Grup"
+ GROUPS_HELP: "Daftar kelompok pengguna adalah bagian dari"
+ ADMIN_ACCESS: "Akses Admin"
+ SITE_ACCESS: "Akses situs"
+ INVALID_SECURITY_TOKEN: "Token keamanan tidak valid"
+ ACTIVATE: "Mengaktifkan"
+ TWIG_UMASK_FIX: "Umask Fix"
+ TWIG_UMASK_FIX_HELP: "Secara default Ranting menciptakan file cache sebagai 0755, memperbaiki switch ini untuk 0775"
+ CACHE_PERMS: "Izin Cache"
+ CACHE_PERMS_HELP: "Default perms folder cache. Biasanya 0755 atau 0775 tergantung pada setup"
+ REMOVE_SUCCESSFUL: "Hapus Sukses"
+ REMOVE_FAILED: "Hapus Gagal"
+ HIDE_HOME_IN_URLS: "Rute rumah bersembunyi di URL"
+ HIDE_HOME_IN_URLS_HELP: "Akan memastikan rute default untuk setiap halaman di bawah rumah tidak referensi rute reguler rumah ini"
+ TWIG_FIRST: "Proses Ranting Pertama"
+ TWIG_FIRST_HELP: "Jika Anda mengaktifkan Ranting halaman pengolahan, maka Anda dapat mengkonfigurasi Ranting untuk memproses sebelum atau setelah penurunan harga"
+ SESSION_SECURE: "Aman"
+ SESSION_SECURE_HELP: "If true, indicate that the communication for this cookie must be over an encrypted transmission. WARNING: Enable this only on sites that run exclusively on HTTPS"
+ SESSION_HTTPONLY: "Hanya HTTP"
+ SESSION_HTTPONLY_HELP: "Jika benar, menunjukkan bahwa cookie harus digunakan hanya melalui HTTP, dan modifikasi JavaScript tidak diperbolehkan"
+ REVERSE_PROXY: "Membalikkan Proxy"
+ REVERSE_PROXY_HELP: "Aktifkan ini jika Anda berada di belakang membalikkan proxy dan Anda mengalami masalah dengan URLs yang berisi bagian yang salah"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Materi depan tidak valid, tidak bisa disimpan"
+ ADD_FOLDER: "Tambahkan Folder"
+ PROXY_URL: "Proxy URL"
+ PROXY_URL_HELP: "Masuk proxy HOST atau IP dan PORT"
+ NOTHING_TO_SAVE: "Tidak dapat untuk Menyimpan"
+ FILE_ERROR_ADD: "Terjadi kesalahan saat mencoba menambahkan berkas"
+ FILE_ERROR_UPLOAD: "Terjadi kesalahan saat mencoba mengunggah berkas"
+ FILE_UNSUPPORTED: "Jenis file tidak didukung"
+ ADD_ITEM: "Tambahkan item"
+ FILE_TOO_LARGE: "File yang terlalu besar untuk diunggah, maksimal yang diijinkan adalah %s sesuai dengan untuk pengaturan PHP anda. Tingkatkan pengaturan anda `post_max_size` pengaturan PHP"
+ INSTALLING: "Memasang"
+ LOADING: "Memuat.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Ketergantungan berikut harus dipenuhi terlebih dahulu:"
+ ERROR_INSTALLING_PACKAGES: "Kesalahan saat memuat paket(s)"
+ INSTALLING_DEPENDENCIES: "Ketergantungan Memasang..."
+ INSTALLING_PACKAGES: "Memasang paket(s).."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Paket(s) berhasil dipasang."
+ READY_TO_INSTALL_PACKAGES: "Siap untuk memasang paket(s)"
+ PACKAGES_NOT_INSTALLED: "Paket tidak terpasang"
+ PACKAGES_NEED_UPDATE: "Paket sudah siap dipasang, tapi terlalu usang"
+ PACKAGES_SUGGESTED_UPDATE: "Paket sudah dipasang, dan versinya ok, namun akan diperbarui agar Anda tetap up to date"
+ REMOVE_THE: "Menghapus %s"
+ CONFIRM_REMOVAL: "Anda yakin ingin menghapus ini %s?"
+ REMOVED_SUCCESSFULLY: "%s berhasil dihapus"
+ ERROR_REMOVING_THE: "Kesalahan saat menghapus %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s membutuhkan dependensi berikut, yang tidak diperlukan oleh paket terinstal lainnya. Jika Anda tidak menggunakannya, Anda dapat menghapusnya langsung dari sini."
+ READY_TO_UPDATE_PACKAGES: "Siap untuk memperbarui paket(s)"
+ ERROR_UPDATING_PACKAGES: "Kesalahan saat memperbarui paket(s)"
+ UPDATING_PACKAGES: "Memperbarui paket(s).."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Paket(s) sukses diperbarui."
+ UPDATING: "Memperbarui"
+ GPM_RELEASES: "Rilis GPM"
+ GPM_RELEASES_HELP: "Pilih 'Testing' untuk memasang versi beta atau pengujian"
+ GPM_METHOD: "Metode Pengambilan Jarak Jauh"
+ GPM_METHOD_HELP: "Saat diatur ke Otomatis, Grav akan menentukan apakah fopen tersedia dan menggunakannya, jika tidak jatuh kembali ke cURL. Untuk memaksa penggunaan satu atau pengaturan lainnya pengaturan."
+ GPM_VERIFY_PEER: "Verifikasi Pengintai Remote (SSL)"
+ GPM_VERIFY_PEER_HELP: "Beberapa penyedia layanan tampaknya gagal memverifikasi sertifikat SSL getgrav.org, sehingga GPM tidak dapat bekerja. Jika ini yang terjadi pada Anda, mematikan pengaturan ini mungkin bisa membantu"
+ AUTO: "Otomatis"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabil"
+ TESTING: "Pengujian"
+ FRONTMATTER_PROCESS_TWIG: "Proses Ranting Materi Depan"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Bila diaktifkan Anda bisa menggunakan variabel konfigurasi Ranting di halaman depan"
+ FRONTMATTER_IGNORE_FIELDS: "Abaikan bidang materi depan"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Bidang materi depan tertentu mungkin berisi Ranting namun tidak boleh diproses, seperti 'formulir'"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Paket %s berhasil dipasang"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Induk pengaturan pesanan, pemesanan dinonaktifkan"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Halaman tidak terlihat, memesan Penyandang Cacat"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Pemesanan via admin tidak didukung karena ada lebih dari 200 persamaan"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Pemesanan halaman dinonaktifkan untuk halaman ini karenaAwalan Numerik Foldertidak diaktifkan"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "CATATAN: Anda tidak dapat menambahkan berkas media sampai Anda menyimpan halaman. Cukup klik 'Simpan' di atas"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "CATATAN: Halaman harus disimpan sebelum Anda dapat mengunggah berkas ke dalamnya."
+ DROP_FILES_HERE_TO_UPLOAD: "Jatuhkan file Anda ke sini atau klik disini"
+ INSERT: "Memasukkan"
+ UNDO: "Batalkan"
+ REDO: "Mengulang"
+ HEADERS: "Judul"
+ BOLD: "Tebal"
+ ITALIC: "Miring"
+ STRIKETHROUGH: "Dicoret"
+ SUMMARY_DELIMITER: "Ringkasan Pembatas"
+ LINK: "Tautan"
+ IMAGE: "Gambar"
+ BLOCKQUOTE: "Tanda kutip blok"
+ UNORDERED_LIST: "Daftar tak berurut"
+ ORDERED_LIST: "Daftar pesanan"
+ EDITOR: "Penyunting"
+ PREVIEW: "Pratinjau"
+ FULLSCREEN: "Layar penuh"
+ MODULAR: "Modular"
+ NON_ROUTABLE: "Tidak Rutin"
+ NON_MODULAR: "Tidak Modular"
+ NON_VISIBLE: "Tidak Terlihat"
+ NON_PUBLISHED: "Tidak diterbitkan"
+ CHARACTERS: "karakter"
+ PUBLISHING: "Penerbitan"
+ NOTIFICATIONS: "Pemberitahuan"
+ MEDIA_TYPES: "Jenis Media"
+ IMAGE_OPTIONS: "Pilihan gambar"
+ MIME_TYPE: "Jenis Mime"
+ THUMB: "Gambar kecil"
+ TYPE: "Jenis"
+ FILE_EXTENSION: "Berkas Tambahan"
+ LEGEND: "Riwayat Halaman"
+ MEMCACHE_SERVER: "Memcache server"
+ MEMCACHE_SERVER_HELP: "Alamat server Memcache"
+ MEMCACHE_PORT: "Memcache port"
+ MEMCACHE_PORT_HELP: "Port server Memcache"
+ MEMCACHED_SERVER: "Memcache server"
+ MEMCACHED_SERVER_HELP: "Alamat server Memcache"
+ MEMCACHED_PORT: "Memcache port"
+ MEMCACHED_PORT_HELP: "Port server Memcache"
+ REDIS_SERVER: "Ulangi server"
+ REDIS_SERVER_HELP: "Ulangi alamat server"
+ REDIS_PORT: "Ulangi port"
+ REDIS_PORT_HELP: "Ulangi port server"
+ REDIS_PASSWORD: "Ulangi sandi/rahasia"
+ ALL: "Semua"
+ FROM: "dari"
+ TO: "untuk"
+ RELEASE_DATE: "Tanggal rilis"
+ SORT_BY: "Sortir Oleh"
+ RESOURCE_FILTER: "Menyaring..."
+ FORCE_SSL: "Memaksa SSL"
+ FORCE_SSL_HELP: "Secara global memaksa SSL, jika diaktifkan saat situs tersebut dicapai melalui HTTP, Grav mengirimkan redirect ke halaman HTTPS"
+ NEWS_FEED: "Umpan Berita"
+ EXTERNAL_URL: "URL Eksternal"
+ SESSION_PATH: "Jalan sesi"
+ SESSION_PATH_HELP: "Gunakan hanya jika Anda memilih URL dasar khusus (Anda menulis ulang domain situs / subfolder)"
+ CUSTOM_BASE_URL: "URL dasar khusus"
+ CUSTOM_BASE_URL_HELP: "Gunakan jika Anda ingin menulis ulang domain situs atau menggunakan subfolder yang berbeda dari yang digunakan oleh Grav. Contoh: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Tidak dapat menggunakan "%s" di luar halaman.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Tidak dapat mengunggah berkas %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Tidak dapat memindahkan berkas %s to "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Batal Unggah'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Apa Anda yakin ingin membatalkan unggahan ini?'
+ DROPZONE_DEFAULT_MESSAGE: 'Jatuhkan berkas Anda ke sini atau klik disini'
+ DROPZONE_FALLBACK_MESSAGE: 'Browser Anda tidak mendukung menyeret dan menjatuhkan unggahan berkas.'
+ DROPZONE_FALLBACK_TEXT: 'Silakan gunakan formulir mundur di bawah ini untuk mengunggah berkas Anda seperti di masa lalu.'
+ DROPZONE_FILE_TOO_BIG: 'Berkas terlalu besar ({{filesize}}MiB). Maksimal ukuran berkas: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Anda tidak dapat mengunggah berkas jenis ini."
+ DROPZONE_MAX_FILES_EXCEEDED: "Anda tidak bisa mengunggah berkas lagi."
+ DROPZONE_REMOVE_FILE: "Hapus berkas"
+ DROPZONE_RESPONSE_ERROR: "Server menanggapi dengan {{statusCode}} kode."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Aktifkan Caching Admin"
+ ADMIN_CACHING_HELP: "Caching di admin bisa dikontrol secara mandiri dari situs paling depan"
+ DESTINATION_NOT_SPECIFIED: "Tujuan tidak ditentukan"
+ UPLOAD_ERR_NO_TMP_DIR: "Tidak ada folder sementara"
+ SESSION_SPLIT: "Membagi sesi"
+ SESSION_SPLIT_HELP: "Membagi sesi terpisah antara situs dan plugin lainnya (seperti admin)"
+ ERROR_FULL_BACKTRACE: "Kembalikan jejak kesalahan"
+ ERROR_SIMPLE: "Kesalahan sederhana"
+ ERROR_SYSTEM: "Kesalahan sistem"
+ IMAGES_AUTO_FIX_ORIENTATION: "Perbaiki orientasi secara otomatis"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Secara otomatis perbaiki orientasi gambar berdasarkan data Exif"
+ REDIS_SOCKET: "Ulangi stopkontak"
+ REDIS_SOCKET_HELP: "Mengulangi stopkontak"
+ NOT_SET: "Tidak diatur"
+ PERMISSIONS: "Izin"
+ NEVER_CACHE_TWIG: "Tidak Pernah Menyembunyikan Ranting"
+ NEVER_CACHE_TWIG_HELP: "Hanya isi cache dan proses Ranting setiap waktu untuk halaman. Mengabaikan pengaturan twig_first."
+ ALLOW_WEBSERVER_GZIP: "Izinkan WebServer Gzip"
+ ALLOW_WEBSERVER_GZIP_HELP: "Tidak aktif secara default. Bila diaktifkan, kompresi Gzip/Deflate yang WebServer akan bekerja, namun koneksi http tidak akan ditutup sebelum event onShutDown() menyebabkan pemuatan halaman lebih lambat"
+ OFFLINE_WARNING: "Sambungan ke GPM tidak dapat dibangun"
+ CLEAR_IMAGES_BY_DEFAULT: "Hapus cache gambar secara default"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Secara default gambar yang diproses dihapus untuk semua pembersihan cache, ini dapat dinonaktifkan"
+ CLI_COMPATIBILITY: "Kesesuaian CLI"
+ CLI_COMPATIBILITY_HELP: "Pastikan hanya driver Cache non-volatile yang digunakan (file, redis, memcache, dll.)"
+ REINSTALL_PLUGIN: "Instal ulang Plugin"
+ REINSTALL_THEME: "Instal ulang Tema"
+ REINSTALL_THE: "Menginstal ulang %s"
+ CONFIRM_REINSTALL: "Apakah anda yakin ingin menginstal ulang ini %s?"
+ REINSTALLED_SUCCESSFULLY: "%s Sukses menginstal ulang"
+ ERROR_REINSTALLING_THE: "Kesalahan saat menginstal ulang %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Paket %s berhasil diinstal ulang"
+ REINSTALLATION_FAILED: "Gagal Menginstal ulang"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "Versi yang terinstal bukanlah rilis terbaru. Dengan mengklik Continue, Anda akan menghapus versi sekarang dan menginstal rilis terbaru yang tersedia"
+ TOOLS: "Peralatan"
+ DIRECT_INSTALL: "Langsung Menginstall"
+ NO_PACKAGE_NAME: "Nama paket tidak ditentukan"
+ PACKAGE_EXTRACTION_FAILED: "Ekstraksi paket gagal"
+ NOT_VALID_GRAV_PACKAGE: "Bukan paket Grav yang valid"
+ NAME_COULD_NOT_BE_DETERMINED: "Nama tidak bisa ditentukan"
+ CANNOT_OVERWRITE_SYMLINKS: "Tidak bisa menimpa symlink"
+ ZIP_PACKAGE_NOT_FOUND: "Paket ZIP tidak dapat ditemukan"
+ GPM_OFFICIAL_ONLY: "Khusus GPM"
+ GPM_OFFICIAL_ONLY_HELP: "Hanya mengizinkan pemasangan langsung dari repositori GPM resmi saja."
+ NO_CHILD_TYPE: "Tidak ada tipe anak untuk rawroute ini"
+ SORTABLE_PAGES: "Halaman Dapat di perbaiki:"
+ UNSORTABLE_PAGES: "Halaman yang Tidak Dapat Diurutkan"
+ ADMIN_SPECIFIC_OVERRIDES: "Penimpaan Khusus Admin"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Tampilkan Anak Pesan"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Urutan bahwa anak-anak dari halaman ini harus ditampilkan di tampilan 'Halaman' dari plugin Admin"
+ PWD_PLACEHOLDER: "urutan kompleks minimal panjang 8 karakter"
+ PWD_REGEX: "Sandi Regular"
+ PWD_REGEX_HELP: "Secara default: Sandi harus berisi setidaknya satu nomor dan satu huruf besar dan huruf kecil, dan setidaknya 8 karakter atau lebih"
+ USERNAME_PLACEHOLDER: "huruf kecil saja, misalnya. 'admin'"
+ USERNAME_REGEX: "Nama Pengguna Regular"
+ USERNAME_REGEX_HELP: "Secara default: Hanya huruf kecil, angka, tanda hubung, dan garis bawah. 3 - 16 karakter"
+ CONTENT_PADDING: "Konten lapisan"
+ CONTENT_PADDING_HELP: "Aktifkan / Nonaktifkan lapisan konten di sekitar wilayah konten untuk memberi lebih banyak tempat"
+ ENABLE_AUTO_METADATA: "Metadata otomatis dari Exif"
+ ENABLE_AUTO_METADATA_HELP: "Secara otomatis membuat berkas metadata untuk gambar dengan informasi exif"
+ 2FA_TITLE: "2-Faktor Otentikasi"
+ 2FA_INSTRUCTIONS: "##### 2-Faktor Otentikasi\nAnda mempunyai **2FA** diaktifkan di akun ini. Mohon gunakan **2FA** aplikasi untuk memasukkan arus **6-digit code** untuk menyelesaikan proses masuk."
+ 2FA_LABEL: "Akses Admin"
+ 2FA_FAILED: "Tidak valid 2-Faktor Kode otentikasi, silahkan coba lagi..."
+ 2FA_ENABLED: "2FA Diaktifkan"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "Rahasia 2FA"
+ 2FA_REGENERATE: "Diperbarui"
+ FORCE_LOWERCASE_URLS: "Paksa huruf kecil URLs"
+ VIEW_SITE_TIP: "Lihat situs web"
+ TOOLS_DIRECT_INSTALL_TITLE: "Instal langsung Paket Grav"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Instal Paket melalui Unggah Langsung berkas ZIP"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Atau, Anda dapat pula merujuk kepada sebuah URL lengkap ke paket ZIP dan menginstalnya melalui URL rujukan ini."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Unduh dan instal"
diff --git a/user/plugins/admin/languages/it.yaml b/user/plugins/admin/languages/it.yaml
new file mode 100644
index 0000000..68b9cdd
--- /dev/null
+++ b/user/plugins/admin/languages/it.yaml
@@ -0,0 +1,724 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Questa è una versione beta! Usare in produzione a proprio rischio e pericolo…"
+ ADMIN_REPORT_ISSUE: "Trovato un problema? Per favore, apri un ticket su GitHub"
+ EMAIL_FOOTER: "Powered by Grav - Il CMS Flat File e Moderno"
+ LOGIN_BTN: "Accedi"
+ LOGIN_BTN_FORGOT: "Dimenticata"
+ LOGIN_BTN_RESET: "Ripristina la password"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Invia istruzioni di ripristino"
+ LOGIN_BTN_CLEAR: "Resetta il modulo"
+ LOGIN_BTN_CREATE_USER: "Crea Utente"
+ LOGIN_LOGGED_IN: "Login effettuato con successo"
+ LOGIN_FAILED: "Login fallito"
+ LOGGED_OUT: "Sei stato disconnesso"
+ RESET_NEW_PASSWORD: "Inserisci una nuova password …"
+ RESET_LINK_EXPIRED: "Il link di ripristino è scaduto, ritenta per favore"
+ RESET_PASSWORD_RESET: "La password è stata ripristinata"
+ RESET_INVALID_LINK: "Il link di ripristino non è valido, ritenta per favore"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Le istruzioni per ripristinare la password sono state inviate via email a %s"
+ FORGOT_FAILED_TO_EMAIL: "Invio della email fallito, per favore ritenta più tardi"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Impossibile ripristinare la password per %s, nessun indirizzo email impostato"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "L'utente con username %s non esiste"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Impossibile ripristinare la password. Il sito non è configurato per inviare email"
+ FORGOT_EMAIL_SUBJECT: "%s Richiesta di ripristino password"
+ FORGOT_EMAIL_BODY: "
Reset password
Caro %1$s,
Una richiesta di reset password è stata effettuata su %4$s.
In alternativa, copia il seguente URL nella barra indirizzi del tuo browser:
%2$s
Cordiali saluti,
%3$s
"
+ MANAGE_PAGES: "Gestione Pagine"
+ CONFIGURATION: "Impostazioni"
+ PAGES: "Pagine"
+ PLUGINS: "Plugins"
+ PLUGIN: "Plugin"
+ THEMES: "Temi"
+ LOGOUT: "Esci"
+ BACK: "Indietro"
+ NEXT: "Successivo"
+ PREVIOUS: "Precedente"
+ ADD_PAGE: "Aggiungi Pagina"
+ ADD_MODULAR: "Aggiungi Modulo"
+ MOVE: "Sposta"
+ DELETE: "Elimina"
+ UNSET: "Non impostato"
+ VIEW: "Vista"
+ SAVE: "Salva"
+ NORMAL: "Normale"
+ EXPERT: "Esperto"
+ EXPAND_ALL: "Espandi tutto"
+ COLLAPSE_ALL: "Comprimi tutto"
+ ERROR: "Errore"
+ CLOSE: "Chiudi"
+ CANCEL: "Cancella"
+ CONTINUE: "Continua"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Conferma richiesta"
+ MODAL_CHANGED_DETECTED_TITLE: "Modifiche rilevate"
+ MODAL_CHANGED_DETECTED_DESC: "Sono stati rilevati cambiamenti non salvati. Si è sicuri di voler lasciare la pagina senza prima salvare?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Conferma richiesta"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Si è sicuri di voler eliminare questo file? Questa azione non può essere annullata."
+ ADD_FILTERS: "Aggiungi filtri"
+ SEARCH_PAGES: "Cerca pagine"
+ VERSION: "Versione"
+ WAS_MADE_WITH: "Prodotto con"
+ BY: "Da"
+ UPDATE_THEME: "Aggiorna Tema"
+ UPDATE_PLUGIN: "Aggiorna Plugin"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "di questo tema è ora disponibile"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "di questo plugin è ora disponibile"
+ AUTHOR: "Autore"
+ HOMEPAGE: "Pagina iniziale"
+ DEMO: "Demo"
+ BUG_TRACKER: "Bug Tracker"
+ KEYWORDS: "Parole chiave"
+ LICENSE: "Licenza"
+ DESCRIPTION: "Descrizione"
+ README: "Leggimi"
+ REMOVE_THEME: "Rimuovi tema"
+ INSTALL_THEME: "Installa tema"
+ THEME: "Tema"
+ BACK_TO_THEMES: "Torna ai Temi"
+ BACK_TO_PLUGINS: "Torna ai Plugins"
+ CHECK_FOR_UPDATES: "Controlla aggiornamenti"
+ ADD: "Aggiungi"
+ CLEAR_CACHE: "Svuota Cache"
+ CLEAR_CACHE_ALL_CACHE: "Tutta la Cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Solo Assets"
+ CLEAR_CACHE_IMAGES_ONLY: "Solo Immagini"
+ CLEAR_CACHE_CACHE_ONLY: "Solo Cache"
+ CLEAR_CACHE_TMP_ONLY: "Solo temporanei"
+ DASHBOARD: "Pannello di Controllo"
+ UPDATES_AVAILABLE: "Aggiornamenti disponibili"
+ DAYS: "Giorni"
+ UPDATE: "Aggiorna"
+ BACKUP: "Backup"
+ BACKUPS: "Backup"
+ BACKUP_NOW: "Esegui backup ora"
+ BACKUPS_STATS: "Backup delle statistiche"
+ BACKUPS_HISTORY: "Backup della cronologia"
+ BACKUPS_PROFILES: "Backup dei profili"
+ BACKUPS_COUNT: "Numero di backup"
+ BACKUPS_PROFILES_COUNT: "Numero di Profili"
+ BACKUPS_TOTAL_SIZE: "Spazio utilizzato"
+ BACKUPS_NEWEST: "Backup più recente"
+ BACKUPS_OLDEST: "Backup meno recente"
+ BACKUPS_PURGE: "Rimuovi"
+ BACKUPS_NOT_GENERATED: "Nessun backup è stato ancora generato..."
+ BACKUPS_PURGE_NUMBER: "Sto usando %s di %s backup"
+ STATISTICS: "Statistiche"
+ TODAY: "Oggi"
+ WEEK: "Settimana"
+ MONTH: "Mese"
+ LATEST_PAGE_UPDATES: "Ultimi Aggiornamenti della Pagina"
+ MAINTENANCE: "Manutenzione"
+ UPDATED: "Aggiornato"
+ MON: "Lun"
+ TUE: "Mar"
+ WED: "Mer"
+ THU: "Gio"
+ FRI: "Ven"
+ SAT: "Sab"
+ SUN: "Dom"
+ COPY: "Copia"
+ EDIT: "Modifica"
+ CREATE: "Crea"
+ GRAV_ADMIN: "Admin di Grav"
+ GRAV_OFFICIAL_PLUGIN: "Plugin Ufficiale Grav"
+ GRAV_OFFICIAL_THEME: "Tema Ufficiale Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Questo plugin ha un link simbolico. Gli aggiornamenti verranno ignorati."
+ THEME_SYMBOLICALLY_LINKED: "Questo tema ha un link simbolico. Gli aggiornamenti verranno ignorati"
+ REMOVE_PLUGIN: "Rimuovi Plugin"
+ INSTALL_PLUGIN: "Installa Plugin"
+ AVAILABLE: "Disponibile"
+ INSTALLED: "Installato"
+ INSTALL: "Installa"
+ ACTIVE_THEME: "Tema attivo"
+ SWITCHING_TO: "Passando a"
+ SWITCHING_TO_DESCRIPTION: "Cambiando il tema, non è garantito che tutti i layout di pagina siano supportati, potenzialmente causando errori quando si tenta di caricare tali pagine."
+ SWITCHING_TO_CONFIRMATION: "Si desidera continuare e cambiare il tema"
+ CREATE_NEW_USER: "Crea nuovo utente"
+ REMOVE_USER: "Rimuovi utente"
+ ACCESS_DENIED: "Accesso negato"
+ ACCOUNT_NOT_ADMIN: "il tuo account non ha permessi di amministratore"
+ PHP_INFO: "PHP Info"
+ INSTALLER: "Installazione"
+ AVAILABLE_THEMES: "Temi disponibili"
+ AVAILABLE_PLUGINS: "Plugin disponibili"
+ INSTALLED_THEMES: "Temi installati"
+ INSTALLED_PLUGINS: "Plugins installati"
+ BROWSE_ERROR_LOGS: "Vedi log errori"
+ SITE: "Sito"
+ INFO: "Info"
+ SYSTEM: "Sistema"
+ USER: "Utente"
+ ADD_ACCOUNT: "Aggiungi utente"
+ SWITCH_LANGUAGE: "Cambia lingua"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Plugin abilitato con successo"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Plugin disabilitato con successo"
+ SUCCESSFULLY_CHANGED_THEME: "Tema cambiato con successo"
+ INSTALLATION_FAILED: "Intallazione fallita"
+ INSTALLATION_SUCCESSFUL: "Installazione avvenuta con successo"
+ UNINSTALL_FAILED: "Disinstallazione fallita"
+ UNINSTALL_SUCCESSFUL: "Disinstallazione riuscita"
+ SUCCESSFULLY_SAVED: "Salvato con successo"
+ SUCCESSFULLY_COPIED: "Copiato con successo"
+ REORDERING_WAS_SUCCESSFUL: "Riordinato con successo"
+ SUCCESSFULLY_DELETED: "Eliminato con successo"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Lingua cambiata con successo"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Permissi insufficenti per l'operazione"
+ CACHE_CLEARED: "Cache svuotata"
+ METHOD: "Metodo"
+ ERROR_CLEARING_CACHE: "Errore nella pulizia della cache"
+ AN_ERROR_OCCURRED: "Errore rilevato"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Il tuo backup è pronto per il download"
+ DOWNLOAD_BACKUP: "Scarica backup"
+ PAGES_FILTERED: "Pagine filtrate"
+ NO_PAGE_FOUND: "Nessuna pagina trovata"
+ INVALID_PARAMETERS: "Parametri invalidi"
+ NO_FILES_SENT: "Nessun file inviato"
+ EXCEEDED_FILESIZE_LIMIT: "È stato superato il limite massimo della dimensione del file di configurazione PHP"
+ UNKNOWN_ERRORS: "Errore sconosciuto"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "È stato superato il limite massimo della dimensione del file di configurazione di Grav"
+ UNSUPPORTED_FILE_TYPE: "Tipo di file non supportato"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Fallito lo spostamento del file caricato"
+ FILE_UPLOADED_SUCCESSFULLY: "File caricato con successo"
+ FILE_DELETED: "File eliminato"
+ FILE_COULD_NOT_BE_DELETED: "Il file non può essere eliminato"
+ FILE_NOT_FOUND: "File non trovato"
+ NO_FILE_FOUND: "Nessun file trovato"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav è stato correttamente aggiornato a"
+ GRAV_UPDATE_FAILED: "Aggiornamento di Grav fallito"
+ EVERYTHING_UPDATED: "Tutto aggiornato"
+ UPDATES_FAILED: "Aggiornamento fallito"
+ AVATAR_BY: "Avatar da"
+ AVATAR_UPLOAD_OWN: "O carica il tuo..."
+ LAST_BACKUP: "Ultimo Backup"
+ FULL_NAME: "Nome completo"
+ USERNAME: "Nome utente"
+ EMAIL: "Email"
+ USERNAME_EMAIL: "Nome utente o email"
+ PASSWORD: "Password"
+ PASSWORD_CONFIRM: "Conferma Password"
+ TITLE: "Titolo"
+ LANGUAGE: "Lingua"
+ ACCOUNT: "Profilo"
+ EMAIL_VALIDATION_MESSAGE: "Deve essere un indirizzo email valido"
+ PASSWORD_VALIDATION_MESSAGE: "La password deve contenere almeno un numero, una lettera maiuscola e una minuscola, ed essere lunga almeno 8 caratteri"
+ LANGUAGE_HELP: "Imposta la lingua preferita"
+ MEDIA: "Media"
+ DEFAULTS: "Impostazioni predefinite"
+ SITE_TITLE: "Titolo del sito"
+ SITE_TITLE_PLACEHOLDER: "Titolo di tutto il sito"
+ SITE_TITLE_HELP: "Il titolo di default per il tuo sito, usato soprattutto dai temi"
+ SITE_DEFAULT_LANG: "Lingua predefinita"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Lingua predefinita usata dal tag del tema"
+ SITE_DEFAULT_LANG_HELP: "Lingua predefinita usata dal tag del tema"
+ DEFAULT_AUTHOR: "Autore predefinito"
+ DEFAULT_AUTHOR_HELP: "Un nome autore di default, usato dai temi o dal contenuto delle pagine"
+ DEFAULT_EMAIL: "Email predefinita"
+ DEFAULT_EMAIL_HELP: "Una email predefinita, usata dal tema o dalle pagine"
+ TAXONOMY_TYPES: "Tassonomie"
+ TAXONOMY_TYPES_HELP: "Le tassonomie devono essere definite qui per essere utilizzate nelle pagine"
+ PAGE_SUMMARY: "Sommario pagina"
+ ENABLED: "Abilitato"
+ ENABLED_HELP: "Abilita il sommario pagina (il sommario viene preso dal contenuto della pagina)"
+ 'YES': "Sì"
+ 'NO': "No"
+ SUMMARY_SIZE: "Dimensione del sommario"
+ SUMMARY_SIZE_HELP: "Il numero di caratteri del contenuto della pagina da usare come sommario"
+ FORMAT: "Formato"
+ FORMAT_HELP: "corto = usa la prima occorrenza di un delimitatore; lungo = il delimitatore di sommario verrà ignorato"
+ SHORT: "Corto"
+ LONG: "Lungo"
+ DELIMITER: "Delimitatore"
+ DELIMITER_HELP: "Il delimitatore di sommario (predefinito '===')"
+ METADATA: "Metadati"
+ METADATA_HELP: "I valori metadata predefiniti che verranno mostrati in ogni pagina, a meno che sovrascritti dalla pagina (override)"
+ NAME: "Nome"
+ CONTENT: "Contenuto"
+ REDIRECTS_AND_ROUTES: "Redirect & Route"
+ CUSTOM_REDIRECTS: "Redirect custom"
+ CUSTOM_REDIRECTS_HELP: "Route impostate per ridirigere gli alias indicati verso altre pagine. Regex accettate."
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/il-tuo/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/il-tuo/redirect"
+ CUSTOM_ROUTES: "Route custom"
+ CUSTOM_ROUTES_HELP: "Route impostate per essere alias di altre pagine. Regex accettate."
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/il-tuo/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/la-tua/route"
+ FILE_STREAMS: "Stream File"
+ DEFAULT: "Predefinito"
+ PAGE_MEDIA: "Media della pagina"
+ OPTIONS: "Opzioni"
+ PUBLISHED: "Pubblicato"
+ PUBLISHED_HELP: "Di default una pagina è pubblicata a meno che non venga esplicitamente impostata published: false, o con l'opzione publish_date impostata per il futuro, o altrimenti con l'opzione unpublish_date impostata nel passato"
+ DATE: "Data"
+ DATE_HELP: "La variabile data permette di specificare una data associata a questa pagina."
+ PUBLISHED_DATE: "Data di pubblicazione"
+ PUBLISHED_DATE_HELP: "Fornisce una data che permette la pubblicazione automatica della pagina."
+ UNPUBLISHED_DATE: "Data di rimozione dalla pubblicazione"
+ UNPUBLISHED_DATE_HELP: "Può fornire una data per rimuovere automaticamente la pubblicazione della pagina."
+ ROBOTS: "Robot"
+ TAXONOMIES: "Tassonomie"
+ TAXONOMY: "Tassonomia"
+ ADVANCED: "Avanzato"
+ SETTINGS: "Settaggi"
+ FOLDER_NUMERIC_PREFIX: "Prefisso numerico della cartella"
+ FOLDER_NUMERIC_PREFIX_HELP: "Prefisso numerico che fornisce ordinamento manuale ed implica visibilità"
+ FOLDER_NAME: "Nome Cartella"
+ FOLDER_NAME_HELP: "Il nome della cartella che sarà memorizzato nel filesystem per questa pagina"
+ PARENT: "Superiore"
+ DEFAULT_OPTION_ROOT: "- Radice -"
+ DEFAULT_OPTION_SELECT: "- Seleziona -"
+ DISPLAY_TEMPLATE: "Visualizza Template"
+ DISPLAY_TEMPLATE_HELP: "Il tipo di pagina che si traduce nel template Twig che genera la pagina"
+ BODY_CLASSES: "Classi del tag body"
+ ORDERING: "Ordinamento"
+ PAGE_ORDER: "Ordine pagina"
+ OVERRIDES: "Sovrascrittura"
+ MENU: "Menu"
+ MENU_HELP: "La stringa da utilizzare in un menù. Se non impostata, verrà utilizzato il Title."
+ SLUG: "Slug"
+ SLUG_HELP: "La variabile slug permette di specificare la porzione di URL associata alla pagina"
+ SLUG_VALIDATE_MESSAGE: "Lo slug deve contenere solo caratteri alfanumerici minuscoli e trattini"
+ PROCESS: "Processa"
+ PROCESS_HELP: "Controlla come sono processate le pagine. Può essere impostato per pagina anzichè globale"
+ DEFAULT_CHILD_TYPE: "Child Type Predefinito"
+ USE_GLOBAL: "Usa globale"
+ ROUTABLE: "Routabile"
+ ROUTABLE_HELP: "Se questa pagina è raggiungibile tramite URL"
+ CACHING: "Cache"
+ VISIBLE: "Visibile"
+ VISIBLE_HELP: "Determina se una pagina è visible nella navigazione"
+ DISABLED: "Disabilitato"
+ ITEMS: "Elementi"
+ ORDER_BY: "Ordina per"
+ ORDER: "Ordine"
+ FOLDER: "Cartella"
+ ASCENDING: "Ascendente"
+ DESCENDING: "Discendente"
+ ADD_MODULAR_CONTENT: "Aggiungi contenuto modulare"
+ PAGE_TITLE: "Titolo pagina"
+ PAGE_TITLE_HELP: "Il titolo della pagina"
+ PAGE: "Pagina"
+ MODULAR_TEMPLATE: "Template modulare"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Nome del file"
+ PARENT_PAGE: "Pagina Superiore"
+ HOME_PAGE: "Pagina iniziale"
+ HOME_PAGE_HELP: "La pagina che Grav userà come pagina predefinita di base"
+ DEFAULT_THEME: "Tema predefinito"
+ DEFAULT_THEME_HELP: "Imposta il tema predefinito utilizzato da Grav (il predefinito è Antimatter)"
+ TIMEZONE: "Fuso orario"
+ TIMEZONE_HELP: "Sovrascrivi il fuso orario predefinito del server"
+ SHORT_DATE_FORMAT: "Formato di data corto"
+ SHORT_DATE_FORMAT_HELP: "Imposta il formato di data corto che può essere usato dai temi"
+ LONG_DATE_FORMAT: "Formato di data lungo"
+ LONG_DATE_FORMAT_HELP: "Imposta il formato di data lungo che può essere usato dai temi"
+ DEFAULT_ORDERING: "Ordine predefinito"
+ DEFAULT_ORDERING_HELP: "Le pagine in una lista saranno disposte in questo ordine a meno che sia sovrascritto"
+ DEFAULT_ORDERING_DEFAULT: "Predefinito - basato sul nome della cartella"
+ DEFAULT_ORDERING_FOLDER: "Cartella - basato su nome della cartella senza prefisso"
+ DEFAULT_ORDERING_TITLE: "Titolo - basato sul campo titolo nell'intestazione della pagina"
+ DEFAULT_ORDERING_DATE: "Data - basato sul campo 'date' nell'intestazione della pagina"
+ DEFAULT_ORDER_DIRECTION: "Direzione ordinamento predefinita"
+ DEFAULT_ORDER_DIRECTION_HELP: "La direzione dell'ordine delle pagine in una lista"
+ DEFAULT_PAGE_COUNT: "Numero di pagine predefinito"
+ DEFAULT_PAGE_COUNT_HELP: "Il numero massimo predefinito di pagine elencate in una lista"
+ DATE_BASED_PUBLISHING: "Pubblicazione basata sulla data"
+ DATE_BASED_PUBLISHING_HELP: "Rimuovi dalla pubblicazione automaticamente i post in base alla data"
+ EVENTS: "Eventi"
+ EVENTS_HELP: "Abilita o disabilita specifici eventi. Disabitando questo campo può causare problemi nei plugin"
+ REDIRECT_DEFAULT_ROUTE: "Redirect alla route predefinita"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Esegui il redirect automatico di una pagina verso la sua route predefinita"
+ LANGUAGES: "Linguaggi"
+ SUPPORTED: "Supportati"
+ SUPPORTED_HELP: "Lista separata da virgole dei codici di linguaggio a 2 caratteri supportati (ad esempio en,fr,de)"
+ TRANSLATIONS_ENABLED: "Abilita traduzioni"
+ TRANSLATIONS_ENABLED_HELP: "Supporta le traduzioni in Grav, plugin e temi"
+ TRANSLATIONS_FALLBACK: "Fallback delle traduzioni"
+ TRANSLATIONS_FALLBACK_HELP: "Esegui il fallback delle traduzioni se la lingua attiva non ha una traduzione disponibile"
+ ACTIVE_LANGUAGE_IN_SESSION: "Linguaggio attivo nella sessione"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Memorizza il linguaggio attivo nella sessione"
+ HTTP_HEADERS: "Intestazioni HTTP"
+ EXPIRES: "Scade"
+ EXPIRES_HELP: "Imposta l'header expires. Il valore è espresso in secondi"
+ CACHE_CONTROL: "Controllo cache HTTP"
+ CACHE_CONTROL_HELP: "Imposta ad un valore valido di cache control come \"no-cache, non salvare, deve essere rivalidato\""
+ LAST_MODIFIED: "Ultima modifica"
+ LAST_MODIFIED_HELP: "Imposta l'header di ultima modifica che può aiutare ad ottimizzare proxy e cache del browser"
+ ETAG: "ETag"
+ ETAG_HELP: "Imposta l'header ETag per aiutare ad identificare quanto una pagina è stata modificata"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Imposta l'header `Vary: Accept Encoding` per aiutare con proxy e cache del CDN"
+ MARKDOWN_EXTRA: "Markdown extra"
+ MARKDOWN_EXTRA_HELP: "Abilita il supporto predefinito per Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Abilita l'escape delle entità HTML al di fuori del markdown"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Abilita l'escape delle entità HTML al di fuori del markdown"
+ AUTO_LINE_BREAKS: "Interruzione di riga automatica"
+ AUTO_LINE_BREAKS_HELP: "Abilita il supporto per l'interruzione di rigua automatica in markdown"
+ AUTO_URL_LINKS: "Link URL automatici"
+ AUTO_URL_LINKS_HELP: "Abilita la conversione automatica di URL in link HTML"
+ ESCAPE_MARKUP: "Escape del markup"
+ ESCAPE_MARKUP_HELP: "Abilita l'escape automatico di tags di markup nelle entità HTML"
+ CACHING_HELP: "Switch globale per abilitare o disabilitare la cache di Grav"
+ CACHE_CHECK_METHOD: "Metodo controllo cache"
+ CACHE_CHECK_METHOD_HELP: "Seleziona il metodo usato da Grav per controllare che i file di una pagina siano stati modificati"
+ CACHE_DRIVER: "Driver di cache"
+ CACHE_DRIVER_HELP: "Scegli quale driver di cache deve essere usato da Grav. 'Auto Detect' troverà il migliore automaticamente"
+ CACHE_PREFIX: "Prefisso cache"
+ CACHE_PREFIX_HELP: "Un identificatore per parte della chiave cache di Grav. Non modificare a meno di essere sicuri di quello che si sta facendo."
+ CACHE_PREFIX_PLACEHOLDER: "Derivato dall'URL di base (sovrascrivere inserendo una stringa random)"
+ LIFETIME: "Durata"
+ LIFETIME_HELP: "Imposta la durata della cache in secondi. 0 = infinito"
+ GZIP_COMPRESSION: "Compressione GZip"
+ GZIP_COMPRESSION_HELP: "Abilita la compressione GZip per incrementare la performance della pagina"
+ TWIG_TEMPLATING: "Template Twig"
+ TWIG_CACHING: "Cache di Twig"
+ TWIG_CACHING_HELP: "Controlla il sistema di caching di Twig. Abilitare per una migliore prestazione"
+ TWIG_DEBUG: "Debug Twig"
+ TWIG_DEBUG_HELP: "Abilita o meno l'estensione Debugger di Twig"
+ DETECT_CHANGES: "Rileva cambiamenti"
+ DETECT_CHANGES_HELP: "Ricompila automaticamente la cache di Twig se vengono rilevati cambiamenti nei template Twig"
+ AUTOESCAPE_VARIABLES: "Autoescape variabili"
+ AUTOESCAPE_VARIABLES_HELP: "Autoescape tutte le variabili. Questo potrebbe facilmente causare errori nel sito"
+ ASSETS: "Assets"
+ CSS_PIPELINE: "Pipeline CSS"
+ CSS_PIPELINE_HELP: "La pipeline CSS è l'unificazione di più file CSS in uno solo"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Includere file esterni nella pipeline del CSS"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Gli URL esterni a volte hanno riferimenti di file relativi e non dovrebbero essere sottoposti a pipelining"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "La pipeline CSS viene renderizzata prima"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Il rendering della pipeline CSS viene inserito prima di qualsiasi altro riferimento CSS non incluso"
+ CSS_MINIFY: "Minify CSS"
+ CSS_MINIFY_HELP: "Minify il CSS durante il pipelining"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "CSS minify su Windows"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Ability il minify su piattaforma Windows. Disabilitato di default a causa di ThreadStackSize"
+ CSS_REWRITE: "Riscrivi CSS"
+ CSS_REWRITE_HELP: "Riscrivi tutti gli URL relativi contenuti nei file CSS durante il pipelining"
+ JAVASCRIPT_PIPELINE: "Pipeline JavaScript"
+ JAVASCRIPT_PIPELINE_HELP: "La pipeline di JavaScript è l'unificazione di più file JS in uno solo"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Includere file esterni nella pipeline JS"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Gli URL esterni a volte hanno riferimenti di file relativi e non dovrebbero essere sottoposti a pipelining"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "La pipeline JS viene renderizzata per prima"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Il rendering della pipeline JS viene inserito prima di qualsiasi altro riferimento JS non incluso"
+ JAVASCRIPT_MINIFY: "Minify JavaScript"
+ JAVASCRIPT_MINIFY_HELP: "Attiva il minify di JavaScript durante il pipelining"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Abilita timestamp sugli assets"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Abilita timestamp sugli assets"
+ COLLECTIONS: "Collezioni"
+ ERROR_HANDLER: "Gestione degli errori"
+ DISPLAY_ERRORS: "Mostra errori"
+ DISPLAY_ERRORS_HELP: "Mostra l'output completo degli errori"
+ LOG_ERRORS: "Log errori"
+ LOG_ERRORS_HELP: "Logga gli errori nella cartella /logs"
+ DEBUGGER: "Debugger"
+ DEBUGGER_HELP: "Abilita il debugger di Grav ed i seguenti settaggi"
+ DEBUG_TWIG: "Debug Twig"
+ DEBUG_TWIG_HELP: "Abilita il debug dei template Twig"
+ SHUTDOWN_CLOSE_CONNECTION: "Chiudi la connessione in onShutdown"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Chiudi la connessione prima di chiamare onShutdown(). Disabilita in fase di debug."
+ DEFAULT_IMAGE_QUALITY: "Qualità delle immagini predefinita"
+ DEFAULT_IMAGE_QUALITY_HELP: "La qualità predefinita per le immagini, utilizzata durante resampling o caching delle immagini (85%)"
+ CACHE_ALL: "Attiva la cache su tutte le immagini"
+ CACHE_ALL_HELP: "Attiva la cache su tutte le immagini, anche quelle che non subiscono manipolazioni da parte di Grav"
+ IMAGES_DEBUG: "Debug immagini"
+ IMAGES_DEBUG_HELP: "Mostra un overlay sopra le immagini riportante ad esempio la densità di pixel"
+ UPLOAD_LIMIT: "Limite di upload dei file"
+ UPLOAD_LIMIT_HELP: "Imposta la dimensione di massimo upload dei file, in byte (0 = illimitato)"
+ ENABLE_MEDIA_TIMESTAMP: "Abilita timestamps sui media"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Aggiunge un identificativo basato sulla data di ultima modifica di ogni media file"
+ SESSION: "Sessione"
+ SESSION_ENABLED_HELP: "Abilita il supporto alle sessioni in Grav"
+ TIMEOUT: "Timeout"
+ TIMEOUT_HELP: "Imposta il timeout di sessione, espresso in secondi"
+ SESSION_NAME_HELP: "Indentificatore usato per formare il nome del cookie di sessione"
+ ABSOLUTE_URLS: "URL assoluti"
+ ABSOLUTE_URLS_HELP: "URL assoluti o relativi per `base_url`"
+ PARAMETER_SEPARATOR: "Separatore dei parametri"
+ PARAMETER_SEPARATOR_HELP: "Separatore dei parametri passati, che può essere cambiato per Apache su Windows"
+ TASK_COMPLETED: "Operazione completata"
+ EVERYTHING_UP_TO_DATE: "Tutto aggiornato"
+ UPDATES_ARE_AVAILABLE: "aggiornamenti disponibili"
+ IS_AVAILABLE_FOR_UPDATE: "è disponibile per aggiornamento"
+ IS_NOW_AVAILABLE: "è ora disponibile"
+ CURRENT: "Corrente"
+ UPDATE_GRAV_NOW: "Aggiorna Grav adesso"
+ GRAV_SYMBOLICALLY_LINKED: "Grav è linkato simbolicamente, non è possibile aggiornare da qui"
+ UPDATING_PLEASE_WAIT: "Aggiornando... attendi per favore, sto scaricando"
+ OF_THIS: "di questo"
+ OF_YOUR: "del tuo"
+ HAVE_AN_UPDATE_AVAILABLE: "ha un aggiornamento disponibile"
+ SAVE_AS: "Salva come"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Sei sicuro di voler cancellare questa pagina e tutte le pagine figlie? Se la pagina è stata tradotta in altre lingue, tali lingue verranno preservate e dovranno essere cancellate singolarmente altrimenti verrà cancellata la cartella della pagina e tutte le sottopagine. Questa azione non può essere annullata."
+ AND: "e"
+ UPDATE_AVAILABLE: "Aggiornamento disponibile"
+ METADATA_KEY: "Chiave (ad esempio ' parole chiave')"
+ METADATA_VALUE: "Valore (ad esempio ' Blog, Grav')"
+ USERNAME_HELP: "Il nome utente deve essere compreso tra 3 e 16 caratteri, composti da lettere minuscole, numeri, trattini o il carattere di sottolineatura. Lettere maiuscole, spazi e caratteri speciali non sono consentiti"
+ FULLY_UPDATED: "Tutto aggiornato"
+ SAVE_LOCATION: "Salvato in"
+ PAGE_FILE: "Modello di pagina"
+ PAGE_FILE_HELP: "Nome file del modello di pagina e, per impostazione predefinita, il modello di visualizzazione per questa pagina"
+ NO_USER_ACCOUNTS: "Nessun utente trovato, per cortesia creane uno prima..."
+ REDIRECT_TRAILING_SLASH: "Reindirizza trailing slash"
+ REDIRECT_TRAILING_SLASH_HELP: "Eseguire un redirect 301 piuttosto che utilizzare la gestione delle URI."
+ DEFAULT_DATE_FORMAT: "Formato data pagina"
+ DEFAULT_DATE_FORMAT_HELP: "Formato data della pagina utilizzata da Grav. Come impostazione predefinita Grav cerca di utilizzare il tuo formato data, oppure puoi utilizzare un formato personalizzato seguendo la sintassi di PHP (esempio: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Imposta automaticamente"
+ IGNORE_FILES: "Ignora i files"
+ IGNORE_FILES_HELP: "Files da ignorare quando le pagine vengono processate"
+ IGNORE_FOLDERS: "Ignora le cartelle"
+ IGNORE_FOLDERS_HELP: "Cartelle ignorate quando le pagine vengono processate"
+ HTTP_ACCEPT_LANGUAGE: "Importa la lingua dal Browser"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Si può scegliere di tentare di impostare la lingua sulla base del tag utilizzato in `http_accept_language` nel browser"
+ OVERRIDE_LOCALE: "Sovrascrivi locale"
+ OVERRIDE_LOCALE_HELP: "Sovrascrivi l'impostazione locale in PHP basato sulla tua lingua corrente"
+ REDIRECT: "Pagina di reindirizzamento"
+ REDIRECT_HELP: "Inserisci la route alla pagina oppure un URL esterno per questa pagina. Esempio: `/some/route` or `http://somesite.com`"
+ PLUGIN_STATUS: "Stato plugin"
+ INCLUDE_DEFAULT_LANG: "Include la lingua predefinita"
+ INCLUDE_DEFAULT_LANG_HELP: "Include l'identificatore della lingua in tutti gli URL nella lingua predefinita e.g. `/en/blog/my-post`"
+ ALLOW_URL_TAXONOMY_FILTERS: "Abilita Filtri di Tassonomia via URL"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Abilita la possibilità di filtrare le pagine attraverso URL di tipo `/taxonomy:value`."
+ REDIRECT_DEFAULT_CODE: "Codice redirect predefinito"
+ REDIRECT_DEFAULT_CODE_HELP: "L'HTTP status code da utilizzare per i redirect"
+ IGNORE_HIDDEN: "Ignora file nascosti"
+ IGNORE_HIDDEN_HELP: "Ignora tutti i file e cartelle che iniziano con un PUNTO"
+ WRAPPED_SITE: "Sito wrappato"
+ WRAPPED_SITE_HELP: "Permette a temi e plugin di sapere se Grav è inserito (wrappato) in un altra piattaforma"
+ FALLBACK_TYPES: "Tipi di fallback file consentiti"
+ FALLBACK_TYPES_HELP: "Abilita i tipi di file a cui si può accedere tramite Page Route. Per default sono consentiti tutti i file media supportati."
+ INLINE_TYPES: "Tipi di file inline"
+ INLINE_TYPES_HELP: "Lista di tipi di file che devono essere visualizzati anzichè scaricati"
+ APPEND_URL_EXT: "Appendi l'estensione all'URL"
+ APPEND_URL_EXT_HELP: "Aggiunge una estensione customizzata all'URL della pagina. Nota, questo significa che Grav cercherà il template `..twig`"
+ PAGE_MODES: "Modalità della pagina"
+ PAGE_TYPES: "Tipi di pagina"
+ ACCESS_LEVELS: "Livelli di accesso"
+ GROUPS: "Gruppi"
+ GROUPS_HELP: "Lista dei gruppi a cui appartiene l'utente"
+ ADMIN_ACCESS: "Accesso Amministrazione"
+ SITE_ACCESS: "Accesso Sito"
+ INVALID_SECURITY_TOKEN: "Token di sicurezza non valido"
+ ACTIVATE: "Attiva"
+ TWIG_UMASK_FIX: "Umask Fix"
+ TWIG_UMASK_FIX_HELP: "Per impostazione predefinita Twig crea file memorizzati nella cache come 0755, questa opzione li imposta 0775"
+ CACHE_PERMS: "Permessi Cache"
+ CACHE_PERMS_HELP: "Impostazione predefinita dei permessi della cartella cache. Solitamente 0755 o 0775 a seconda della configurazione"
+ REMOVE_SUCCESSFUL: "Rimozione avvenuta con Sucesso"
+ REMOVE_FAILED: "Rimozione Fallita"
+ HIDE_HOME_IN_URLS: "Nascondi il route Home negli URL"
+ HIDE_HOME_IN_URLS_HELP: "Assicura che i routes predefiniti per ogni pagina sotto Home, non riferiscano allo stesso route Home"
+ TWIG_FIRST: "Processa prima Twig"
+ TWIG_FIRST_HELP: "Se Twig Page Processing è abilitato, puoi configurare Twig in modo da essere processato prima o dopo Markdown"
+ SESSION_SECURE: "Cookie Sicuri"
+ SESSION_SECURE_HELP: "Indica che la comunicazione di questo cookie deve avvenire attraverso una trasmissione cifrata. ATTENZIONE: Abilitare soltanto su siti che vengono serviti esclusivamente via HTTPS"
+ SESSION_HTTPONLY: "Solo HTTP"
+ SESSION_HTTPONLY_HELP: "Indica che i cookie debbano soltanto essere usati attraverso HTTP, e la modifica via JavaScript non è abilitata"
+ REVERSE_PROXY: "Proxy inverso"
+ REVERSE_PROXY_HELP: "Abilitare se si utilizza proxy inverso e si riscontrano problemi con gli URL contenenti porte non corrette"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmatter non valido, impossibile salvare"
+ ADD_FOLDER: "Aggiungi cartella"
+ PROXY_URL: "URL del proxy"
+ PROXY_URL_HELP: "Inserire l'HOST o l'IP del proxy e la porta"
+ NOTHING_TO_SAVE: "Niente da salvare"
+ FILE_ERROR_ADD: "Si è verificato un errore durante il tentativo di aggiungere il file"
+ FILE_ERROR_UPLOAD: "Si è verificato un errore durante il tentativo di caricare il file"
+ FILE_UNSUPPORTED: "Tipo di file non supportato"
+ ADD_ITEM: "Aggiungi elemento"
+ FILE_TOO_LARGE: "Il file è troppo grande per essere caricato. Il massimo consentito è %s secondo le tue impostazioni PHP. Aumentare il valore PHP di 'post_max_size'"
+ INSTALLING: "Installazione"
+ LOADING: "Caricamento.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Le seguenti dipendenze devono essere soddisfatte prima:"
+ ERROR_INSTALLING_PACKAGES: "Errore durante l'installazione del pacchetto/i"
+ INSTALLING_DEPENDENCIES: "Installo le dipendenze..."
+ INSTALLING_PACKAGES: "Installo i pacchetti..."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Pacchetto/i installati correttamente."
+ READY_TO_INSTALL_PACKAGES: "Pronto per installare il pacchetto/i"
+ PACKAGES_NOT_INSTALLED: "Pacchetti non installati"
+ PACKAGES_NEED_UPDATE: "Pacchetti già installati, ma in una versione troppo vecchia"
+ PACKAGES_SUGGESTED_UPDATE: "Pacchetti già installati, e versione ok, ma che verranno aggiornati per avere l'ultima versione disponibile"
+ REMOVE_THE: "Rimuovi il %s"
+ CONFIRM_REMOVAL: "Sicuro di voler cancellare questo %s?"
+ REMOVED_SUCCESSFULLY: "%s rimosso con successo"
+ ERROR_REMOVING_THE: "Errore durante la rimozione di %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s richiede le seguenti dipendenze, che non sono richieste da altri pacchetti installati. Se non li si utilizza, è possibile rimuoverli direttamente da qui."
+ READY_TO_UPDATE_PACKAGES: "Pronto ad aggiornare il pacchetto/i"
+ ERROR_UPDATING_PACKAGES: "Errore durante l'aggiornamento del pacchetto/i"
+ UPDATING_PACKAGES: "Aggiorno il pacchetto/i..."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Pacchetto/i aggiornati correttamente."
+ UPDATING: "Aggiorno"
+ GPM_RELEASES: "GPM Releases"
+ GPM_RELEASES_HELP: "Scegliere 'Test' per installare versioni beta o test"
+ GPM_METHOD: "Metodo di recupero remoto"
+ GPM_METHOD_HELP: "Se impostato su Auto, Grav determinerà se fopen è disponibile e lo utilizzerà. In caso contrario Grav adotterà il fall back su cURL. Modificare l'impostazione per forzare l'uso dell'uno o dell'altro."
+ GPM_VERIFY_PEER: "Verifica remota del Peer (SSL)"
+ GPM_VERIFY_PEER_HELP: "Alcuni provider sembrano fallire la verifica del certificato SSL getgrav.org, causando il malfunzionamento di GPM. In questo caso la disattivazione di questa impostazione potrebbe essere di aiuto"
+ AUTO: "Automatico"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabile"
+ TESTING: "Test"
+ FRONTMATTER_PROCESS_TWIG: "Elabora il frontmatter Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Quando attivate, è possibile utilizzare le variabili di configurazione Twig nel frontmatter della pagina"
+ FRONTMATTER_IGNORE_FIELDS: "Ignora i campi del frontmatter"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Alcuni campi del frontmatter potrebbero contenere Twig ma, come nei 'form' questi non dovrebbero essere elaborati"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Pacchetto %s installato con successo"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Ordinamento dettato dal padre, ordinamento disabilitato"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Pagina non visibile, ordinamento disabilitato"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "L'ordinamento tramite Admin non è supportato perché ci sono più di 200 elementi da ordinare"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "L'ordinamento delle pagine è disattivato per questa pagina perché il prefisso numerico delle cartelle non è abilitato"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "NOTA: non è possibile aggiungere file dei media fino a quando non si salva la pagina. Clicca 'Salva' in alto per salvare la pagina"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "NOTA: La pagina deve essere salvata prima di poter caricare dei file."
+ DROP_FILES_HERE_TO_UPLOAD: "Rilascia i file qui o fai click in questa area"
+ INSERT: "Inserisci"
+ UNDO: "Ripristina"
+ REDO: "Ripeti azione"
+ HEADERS: "Intestazioni"
+ BOLD: "Grassetto"
+ ITALIC: "Corsivo"
+ STRIKETHROUGH: "Barrato"
+ SUMMARY_DELIMITER: "Segno di interruzione del riassunto"
+ LINK: "Link"
+ IMAGE: "Immagine"
+ BLOCKQUOTE: "Virgolettato"
+ UNORDERED_LIST: "Elenco non ordinato"
+ ORDERED_LIST: "Elenco ordinato"
+ EDITOR: "Editor"
+ PREVIEW: "Anteprima"
+ FULLSCREEN: "Schermo intero"
+ MODULAR: "Modulare"
+ NON_ROUTABLE: "Non-routabile"
+ NON_MODULAR: "Non modulare"
+ NON_VISIBLE: "Non visibile"
+ NON_PUBLISHED: "Non pubblicato"
+ CHARACTERS: "caratteri"
+ PUBLISHING: "Pubblicazione"
+ NOTIFICATIONS: "Notifiche"
+ MEDIA_TYPES: "Tipi di media"
+ IMAGE_OPTIONS: "Opzioni immagine"
+ MIME_TYPE: "Tipo di MIME"
+ THUMB: "Miniatura immagine"
+ TYPE: "Tipo"
+ FILE_EXTENSION: "Estensioni dei file"
+ LEGEND: "Legenda di pagina"
+ MEMCACHE_SERVER: "Server Memcache"
+ MEMCACHE_SERVER_HELP: "L'indirizzo del server Memcache"
+ MEMCACHE_PORT: "Porta Memcache"
+ MEMCACHE_PORT_HELP: "La porta del server Memcache"
+ MEMCACHED_SERVER: "Server Memcached"
+ MEMCACHED_SERVER_HELP: "L'indirizzo del server nella Memcache"
+ MEMCACHED_PORT: "Porta Memcached"
+ MEMCACHED_PORT_HELP: "La porta del server nella Memcache"
+ REDIS_SERVER: "Server Redis"
+ REDIS_SERVER_HELP: "L'indirizzo del server Redis"
+ REDIS_PORT: "Porta Redis"
+ REDIS_PORT_HELP: "La porta del server Redis"
+ REDIS_PASSWORD: "Redis password/segreto"
+ ALL: "Tutti"
+ FROM: "da"
+ TO: "a"
+ RELEASE_DATE: "Data di rilascio"
+ SORT_BY: "Ordina per"
+ RESOURCE_FILTER: "Filtro..."
+ FORCE_SSL: "Forza SSL"
+ FORCE_SSL_HELP: "Forza SSL a livello globale. Se abilitato, quando il sito viene raggiunto attraverso HTTP, Grav invia un redirect verso la pagina HTTPS"
+ NEWS_FEED: "Feed di notizie"
+ EXTERNAL_URL: "URL esterno"
+ SESSION_PATH: "Il percorso di sessione"
+ SESSION_PATH_HELP: "Utilizzare solo se si sceglie un URL di base personalizzato (rewrite del dominio del sito / sottocartella)"
+ CUSTOM_BASE_URL: "URL di base personalizzato"
+ CUSTOM_BASE_URL_HELP: "Utilizzare se si desidera fare il rewrite del dominio del sito o utilizzare una sottocartella diversa rispetto a quella utilizzata da Grav. Esempio: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Non è possibile utilizzare "%s" al di fuori delle pagine.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Impossibile caricare il file %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Impossibile spostare il file %s in "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Annulla il caricamento'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Si è sicuri di voler annullare questo caricamento?'
+ DROPZONE_DEFAULT_MESSAGE: 'Rilascia qui i tuoi file o fai click in questa area'
+ DROPZONE_FALLBACK_MESSAGE: 'Il tuo browser non supporta il drag and drop per il caricamento dei file.'
+ DROPZONE_FALLBACK_TEXT: 'Si prega di utilizzare il form di fallback qui sotto per caricare i file, come nei tempi antichi.'
+ DROPZONE_FILE_TOO_BIG: 'Il file è troppo grande ({{filesize}}MiB). Dimensione massima del file ammessa: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Non è possibile caricare i file di questo tipo."
+ DROPZONE_MAX_FILES_EXCEEDED: "Non è possibile caricare altri file."
+ DROPZONE_REMOVE_FILE: "Cancella il file"
+ DROPZONE_RESPONSE_ERROR: "Il server ha risposto con il codice {{statusCode}}."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Abilita la cache di Admin"
+ ADMIN_CACHING_HELP: "La caching dell'admin può essere controllata indipendentemente da quella del sito di front-end"
+ DESTINATION_NOT_SPECIFIED: "Destinazione non specificata"
+ UPLOAD_ERR_NO_TMP_DIR: "Cartella temporanea mancante"
+ SESSION_SPLIT: "Split di sessione"
+ SESSION_SPLIT_HELP: "Split di sessione indipendente tra il sito e gli altri plugin (per es. admin)"
+ ERROR_FULL_BACKTRACE: "Errore completo di Backtrace"
+ ERROR_SIMPLE: "Errore semplice"
+ ERROR_SYSTEM: "Errore di sistema"
+ IMAGES_AUTO_FIX_ORIENTATION: "Orienta automaticamente"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Correggere automaticamente l'orientamento dell'immagine sulla base dei dati Exif"
+ REDIS_SOCKET: "Socket Redis"
+ REDIS_SOCKET_HELP: "Il socket Redis"
+ NOT_SET: "Non impostato"
+ PERMISSIONS: "Permessi"
+ NEVER_CACHE_TWIG: "Non utilizzare mai la cache per Twig"
+ NEVER_CACHE_TWIG_HELP: "Mantieni solamente la cache dei contenuti e processa le pagine sempre con Twig. Ignora l'impostazione twig_first."
+ ALLOW_WEBSERVER_GZIP: "Consentire Gzip del WebServer"
+ ALLOW_WEBSERVER_GZIP_HELP: "Disattivata per impostazione predefinita. Quando attivata, la compressione configurata Gzip/Deflate WebServer, funzionerà ma la connessione http non verrà chiusa prima dell'evento onShutDown() rallentando il caricamento della pagina"
+ OFFLINE_WARNING: "Non è possibile stabilire la connessione con il GPM"
+ CLEAR_IMAGES_BY_DEFAULT: "Cancella la cache delle immagini per impostazione predefinita"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Per impostazione predefinita vengono cancellate le immagini elaborate per tutte le cancellazioni della cache. Ciò può essere disabilitato"
+ CLI_COMPATIBILITY: "Compatibilità CLI"
+ CLI_COMPATIBILITY_HELP: "Assicura che siano utilizzati solo driver Cache non volatili (file, redis, memcache, ecc.)"
+ REINSTALL_PLUGIN: "Reinstalla il Plugin"
+ REINSTALL_THEME: "Reinstalla il tema"
+ REINSTALL_THE: "Reinstalla il %s"
+ CONFIRM_REINSTALL: "Sei sicuro di voler reinstallare questo %s?"
+ REINSTALLED_SUCCESSFULLY: "%s reinstallato correttamente"
+ ERROR_REINSTALLING_THE: "Errore durante la reinstallazione di %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Pacchetto %s reinstallato con successo"
+ REINSTALLATION_FAILED: "Reinstallazione non riuscita"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "La versione installata non è la versione più recente. Cliccando su continua, si potrà rimuovere la versione corrente e installare l'ultima release disponibile"
+ TOOLS: "Strumenti"
+ DIRECT_INSTALL: "Installazione diretta"
+ NO_PACKAGE_NAME: "Nome del pacchetto non specificato"
+ PACKAGE_EXTRACTION_FAILED: "Estrazione del pacchetto non riuscita"
+ NOT_VALID_GRAV_PACKAGE: "Non è un pacchetto valido di Grav"
+ NAME_COULD_NOT_BE_DETERMINED: "Non è possibile determinare il nome"
+ CANNOT_OVERWRITE_SYMLINKS: "Non è possibile sovrascrivere i symlink"
+ ZIP_PACKAGE_NOT_FOUND: "Non è stato trovato il pacchetto ZIP"
+ GPM_OFFICIAL_ONLY: "Solo GPM ufficiale"
+ GPM_OFFICIAL_ONLY_HELP: "Consenti solo installazioni dirette solo dal repository ufficiale di GPM."
+ NO_CHILD_TYPE: "Nessun tipo di figlio per questo rawroute"
+ SORTABLE_PAGES: "Pagine ordinabili:"
+ UNSORTABLE_PAGES: "Pagine non ordinabili"
+ ADMIN_SPECIFIC_OVERRIDES: "Override specifici per l'Admin"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Ordine di visualizzazione dei figli"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Ordine con il quale devono essere visualizzati i figli di questa pagina, nella visualizzazione 'Pagine' del plugin Admin"
+ PWD_PLACEHOLDER: "stringa complessa lunga almeno 8 caratteri"
+ PWD_REGEX: "Password Regex"
+ PWD_REGEX_HELP: "Per impostazione predefinita: la password deve contenere almeno un numero, una lettera maiuscola, una minuscola e deve essere di almeno 8 o più caratteri"
+ USERNAME_PLACEHOLDER: "solo caratteri minuscoli, ad esempio 'admin'"
+ USERNAME_REGEX: "Nome utente Regex"
+ USERNAME_REGEX_HELP: "Per impostazione predefinita: solo caratteri minuscoli, cifre, trattini e underscore. 3 - 16 caratteri"
+ CONTENT_PADDING: "Padding del contenuto"
+ CONTENT_PADDING_HELP: "Attivare/disattivare il padding del contenuto intorno all'area del contenuto per aumentare lo spazio"
+ ENABLE_AUTO_METADATA: "Metadati automatici da Exif"
+ ENABLE_AUTO_METADATA_HELP: "Genera automaticamente i file di metadati per le immagini che contengono informazioni exif"
+ 2FA_TITLE: "Autenticazione in due passaggi"
+ 2FA_INSTRUCTIONS: "##### 2-Factor Authentication \nLa **2FA** è abilitata per questo account. Si prega di utilizzare la vostra app **2FA** per immettere il **6-digit code** per completare il processo di login."
+ 2FA_REGEN_HINT: "La rigenerazione della secret comporterà l'aggiornamento dell'app di autenticazione"
+ 2FA_LABEL: "Accesso a livello amministratore"
+ 2FA_FAILED: "Codice di autenticazione a 2 fattori non valido. Riprovare per favore..."
+ 2FA_ENABLED: "2FA abilitato"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "2FA segreto"
+ 2FA_SECRET_HELP: "Scandisci questo codice QR nella tua [Authenticator App](https://learn.getgrav.org/admin-panel/2fa#apps). È inoltre cosa buona fare il backup della secret in un luogo sicuro, nel caso in cui fosse necessario reinstallare la tua app. Controllare [Grav docs] (https://learn.getgrav.org/admin-panel/2fa) per ulteriori informazioni "
+ 2FA_REGENERATE: "Rigenera"
+ FORCE_LOWERCASE_URLS: "Forza URL minuscoli"
+ FORCE_LOWERCASE_URLS_HELP: "Per impostazione predefinita Grav imposterà tutti gli slugs e le routes in minuscolo. Con tale impostazione su false, possono essere utilizzati slugs e routes maiuscoli"
+ INTL_ENABLED: "Integrazione modulo Intl"
+ INTL_ENABLED_HELP: "Utilizza il modulo PHP Intl e raccogli per ordinare le collezioni basate su UTF8"
+ VIEW_SITE_TIP: "Visualizza sito"
+ TOOLS_DIRECT_INSTALL_TITLE: "Installazione diretta deii pacchetti di Grav"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Installare il pacchetto tramite upload via Direct ZIP"
+ TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Con questo metodo si può facilmente installare un valido tema, plugin, o anche un aggiornamento pacchetto Zip di Grav. Questo pacchetto non deve essere registrato tramite GPM e consente facilmente il rollback a una versione o insallazione precedente per il test."
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Installare il pacchetto tramite riferimento URL remoto"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "In alternativa si può anche fare riferimento ad una URL completa per il file ZIP del pacchetto e installarlo tramite questa URL remota."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Carica e installa"
+ ROUTE_OVERRIDES: "Override della route"
+ ROUTE_DEFAULT: "Route di default"
+ ROUTE_CANONICAL: "Route canonica"
+ ROUTE_ALIASES: "Alias della route"
diff --git a/user/plugins/admin/languages/ja.yaml b/user/plugins/admin/languages/ja.yaml
new file mode 100644
index 0000000..1bbcebb
--- /dev/null
+++ b/user/plugins/admin/languages/ja.yaml
@@ -0,0 +1,645 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "これはベータリリースです。稼働中サイトでは、自己責任においてご利用ください。"
+ ADMIN_REPORT_ISSUE: "問題を見つけた場合は、GitHub にてご報告をお願いします。"
+ EMAIL_FOOTER: "Powered by Grav - The Modern Flat File CMS"
+ LOGIN_BTN: "ログイン"
+ LOGIN_BTN_FORGOT: "パスワードを紛失"
+ LOGIN_BTN_RESET: "パスワードをリセット"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "リセット手順を送信"
+ LOGIN_BTN_CLEAR: "フォームをクリア"
+ LOGIN_BTN_CREATE_USER: "ユーザーを作成"
+ LOGIN_LOGGED_IN: "正常にログインしました。"
+ LOGIN_FAILED: "ログインに失敗しました。"
+ LOGGED_OUT: "ログアウトしました。"
+ RESET_NEW_PASSWORD: "新パスワードを入力してください …"
+ RESET_LINK_EXPIRED: "リセットリンクが期限切れです。再試行してください。"
+ RESET_PASSWORD_RESET: "パスワードがリセットされました。"
+ RESET_INVALID_LINK: "無効なリセットリンクを使用しました。再試行してください。"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "パスワードのリセット手順を、メールで %s 宛に送信しました。"
+ FORGOT_FAILED_TO_EMAIL: "リセット手順のメール送信に失敗しました。後ほど再試行してください。"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "メールアドレスが設定されていないため、 %s のパスワードをリセットできません。"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "ユーザー名が %s のユーザーは存在しません。"
+ FORGOT_EMAIL_NOT_CONFIGURED: "このサイトはメールを送信できるように設定されていないため、パスワードのリセットができません。"
+ FORGOT_EMAIL_SUBJECT: "%s パスワードリセットのリクエスト"
+ FORGOT_EMAIL_BODY: "
Als alternatief kan je de volgende URL kopiëren in de adresbalk van je browser:
%2$s
Met vriendelijke groeten,
%3$s
"
+ MANAGE_PAGES: "Beheer pagina's"
+ CONFIGURATION: "Instellingen"
+ PAGES: "Pagina's"
+ PLUGINS: "Plugins"
+ PLUGIN: "Plugin"
+ THEMES: "Thema's"
+ LOGOUT: "Uitloggen"
+ BACK: "Terug"
+ NEXT: "Volgende"
+ PREVIOUS: "Vorige"
+ ADD_PAGE: "Pagina toevoegen"
+ ADD_MODULAR: "Modular toevoegen"
+ MOVE: "Verplaatsen"
+ DELETE: "Verwijderen"
+ UNSET: "Niet ingesteld"
+ VIEW: "Bekijken"
+ SAVE: "Opslaan"
+ NORMAL: "Normaal"
+ EXPERT: "Geavanceerd"
+ EXPAND_ALL: "Alles uitklappen"
+ COLLAPSE_ALL: "Alles inklappen"
+ ERROR: "Fout"
+ CLOSE: "Sluiten"
+ CANCEL: "Annuleer"
+ CONTINUE: "Verder"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Bevestiging vereist"
+ MODAL_CHANGED_DETECTED_TITLE: "Wijzigingen gedetecteerd"
+ MODAL_CHANGED_DETECTED_DESC: "Je hebt niet bewaarde wijzigingen. Wil je doorgaan zonder ze te op te slaan?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Bevestiging vereist"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Weet je zeker dat je dit bestand wilt verwijderen? Dit kan niet ongedaan worden gemaakt."
+ ADD_FILTERS: "Filters toevoegen"
+ SEARCH_PAGES: "Pagina's zoeken"
+ VERSION: "Versie"
+ WAS_MADE_WITH: "Gemaakt met"
+ BY: "Door"
+ UPDATE_THEME: "Theme bijwerken"
+ UPDATE_PLUGIN: "Plugin bijwerken"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "van deze theme is nu beschikbaar"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "van deze plugin is nu beschikbaar"
+ AUTHOR: "Auteur"
+ HOMEPAGE: "Homepage"
+ DEMO: "Demo"
+ BUG_TRACKER: "Bug Tracker"
+ KEYWORDS: "Trefwoorden"
+ LICENSE: "Licentie"
+ DESCRIPTION: "Omschrijving"
+ README: "Leesmij"
+ REMOVE_THEME: "Verwijder Thema"
+ INSTALL_THEME: "Installeer Thema"
+ THEME: "Thema"
+ BACK_TO_THEMES: "Terug naar Thema's"
+ BACK_TO_PLUGINS: "Terug naar Plugins"
+ CHECK_FOR_UPDATES: "Controleren op updates"
+ ADD: "Toevoegen"
+ CLEAR_CACHE: "Cache opschonen"
+ CLEAR_CACHE_ALL_CACHE: "Alle Cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Alleen Assets"
+ CLEAR_CACHE_IMAGES_ONLY: "Aleen Beeld"
+ CLEAR_CACHE_CACHE_ONLY: "Alleen Cache"
+ CLEAR_CACHE_TMP_ONLY: "Alleen Tijdelijk"
+ DASHBOARD: "Dashboard"
+ UPDATES_AVAILABLE: "Updates beschikbaar"
+ DAYS: "Dagen"
+ UPDATE: "Bijwerken"
+ BACKUP: "Reservekopie"
+ BACKUPS: "Back-ups"
+ BACKUP_NOW: "Nu back-up maken"
+ BACKUPS_STATS: "Back-up Statistieken"
+ BACKUPS_HISTORY: "Back-up Historiek"
+ BACKUPS_PURGE_CONFIG: "Schoonmaakconfiguratie Back-uppen"
+ BACKUPS_PROFILES: "Profielen Back-uppen"
+ BACKUPS_COUNT: "Aantal Back-ups"
+ BACKUPS_PROFILES_COUNT: "Aantal Profielen"
+ BACKUPS_TOTAL_SIZE: "Gebruikte Ruimte"
+ BACKUPS_NEWEST: "Nieuwste back-up"
+ BACKUPS_OLDEST: "Oudste Back-up"
+ BACKUPS_PURGE: "Schoonmaken"
+ STATISTICS: "Statistieken"
+ TODAY: "Vandaag"
+ WEEK: "Week"
+ MONTH: "Maand"
+ LATEST_PAGE_UPDATES: "Recente Pagina Updates"
+ MAINTENANCE: "Onderhoud"
+ UPDATED: "Bijgewerkt"
+ MON: "Ma"
+ TUE: "Di"
+ WED: "Wo"
+ THU: "Do"
+ FRI: "Vr"
+ SAT: "Za"
+ SUN: "Zo"
+ COPY: "Kopieer"
+ EDIT: "Bewerk"
+ CREATE: "Maak"
+ GRAV_ADMIN: "Grav beheer"
+ GRAV_OFFICIAL_PLUGIN: "Officiële Grav Plugin"
+ GRAV_OFFICIAL_THEME: "Officiële Grav Thema"
+ PLUGIN_SYMBOLICALLY_LINKED: "Deze plugin is symbolisch gekoppeld. Updates worden niet gedetecteerd."
+ THEME_SYMBOLICALLY_LINKED: "Deze theme is symbolisch gekoppeld. Updates worden niet gedetecteerd"
+ REMOVE_PLUGIN: "Plugin verwijderen"
+ INSTALL_PLUGIN: "Installeer Plugin"
+ AVAILABLE: "Beschikbaar"
+ INSTALLED: "Geïnstalleerd"
+ INSTALL: "Installeren"
+ ACTIVE_THEME: "Actief thema"
+ SWITCHING_TO: "Overschakelen naar"
+ SWITCHING_TO_DESCRIPTION: "Door over te schakelen naar een ander thema, is er geen garantie dat alle pagina's van de layout worden ondersteund. Er worden mogelijk fouten veroorzaakt wanneer wordt geprobeerd om de genoemde pagina's te laden."
+ SWITCHING_TO_CONFIRMATION: "Wilt u doorgaan en overschakelen naar het thema"
+ CREATE_NEW_USER: "Nieuwe gebruiker aanmaken"
+ REMOVE_USER: "Gebruiker verwijderen"
+ ACCESS_DENIED: "Toegang geweigerd"
+ ACCOUNT_NOT_ADMIN: "Je account heeft geen Administrator rechten"
+ PHP_INFO: "PHP Info"
+ INSTALLER: "Installatie programma"
+ AVAILABLE_THEMES: "Beschikbare thema's"
+ AVAILABLE_PLUGINS: "Beschikbare plugins"
+ INSTALLED_THEMES: "Geïnstalleerde thema's"
+ INSTALLED_PLUGINS: "Geïnstalleerde plugins"
+ BROWSE_ERROR_LOGS: "Blader door foutenlogboek"
+ SITE: "Website"
+ INFO: "Informatie"
+ SYSTEM: "Systeem"
+ USER: "Gebruiker"
+ ADD_ACCOUNT: "Account toevoegen"
+ SWITCH_LANGUAGE: "Wissel van taal"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Plugin met succes ingeschakeld"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Plugin met succes uitgeschakeld"
+ SUCCESSFULLY_CHANGED_THEME: "Thema met succes veranderd"
+ INSTALLATION_FAILED: "Installatie mislukt"
+ INSTALLATION_SUCCESSFUL: "Installatie geslaagd"
+ UNINSTALL_FAILED: "Verwijderen mislukt"
+ UNINSTALL_SUCCESSFUL: "Verwijderen geslaagd"
+ SUCCESSFULLY_SAVED: "Succesvol opgeslagen"
+ SUCCESSFULLY_COPIED: "Succesvol gekopieerd"
+ REORDERING_WAS_SUCCESSFUL: "Opnieuw ordenen gelukt"
+ SUCCESSFULLY_DELETED: "Verwijderen geslaagd"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Taal met succes veranderd"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "U heeft onvoldoende rechten voor deze taak"
+ CACHE_CLEARED: "Cache gewist"
+ METHOD: "Methode"
+ ERROR_CLEARING_CACHE: "Fout bij leegmaken van de cache"
+ AN_ERROR_OCCURRED: "Er heeft zich een fout voorgedaan"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Je backup is klaar om te downloaden"
+ DOWNLOAD_BACKUP: "Download backup"
+ PAGES_FILTERED: "Pagina's zijn gefilterd"
+ NO_PAGE_FOUND: "Geen pagina gevonden"
+ INVALID_PARAMETERS: "Ongeldige parameters"
+ NO_FILES_SENT: "Geen bestanden verzonden"
+ EXCEEDED_FILESIZE_LIMIT: "Limiet voor de grootte van het PHP configuratiebestand overschreden"
+ UNKNOWN_ERRORS: "Onbekende fouten"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Limiet voor de grootte van het Grav configuratiebestand overschreden"
+ UNSUPPORTED_FILE_TYPE: "Niet-ondersteund bestandstype"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Het is niet gelukt om het geüploade bestand te verplaatsen."
+ FILE_UPLOADED_SUCCESSFULLY: "Bestand met succes geüpload"
+ FILE_DELETED: "Bestand verwijderd"
+ FILE_COULD_NOT_BE_DELETED: "Bestand kon niet worden verwijderd"
+ FILE_NOT_FOUND: "Bestand niet gevonden"
+ NO_FILE_FOUND: "Geen bestand gevonden"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav is met succes bijgewerkt naar"
+ GRAV_UPDATE_FAILED: "Grav update is mislukt"
+ EVERYTHING_UPDATED: "Alles is bijgewerkt"
+ UPDATES_FAILED: "Updates mislukt"
+ AVATAR_BY: "Avatar door"
+ AVATAR_UPLOAD_OWN: "Of upload uw eigen.."
+ LAST_BACKUP: "Laatste backup"
+ FULL_NAME: "Volledige naam"
+ USERNAME: "Gebruikersnaam"
+ EMAIL: "E-mailadres"
+ USERNAME_EMAIL: "Gebruikersnaam of e-mail"
+ PASSWORD: "Wachtwoord"
+ PASSWORD_CONFIRM: "Bevestig wachtwoord"
+ TITLE: "Titel"
+ LANGUAGE: "Taal"
+ ACCOUNT: "Account"
+ EMAIL_VALIDATION_MESSAGE: "Moet een geldig e-mailadres zijn"
+ PASSWORD_VALIDATION_MESSAGE: "Wachtwoord moet ten minste één nummer, één hoofdletter, één kleine letter en minstens 8 of meer tekens bevatten"
+ LANGUAGE_HELP: "Favoriete taal instellen"
+ MEDIA: "Media"
+ DEFAULTS: "Standaardwaarden"
+ SITE_TITLE: "Titel van de site"
+ SITE_TITLE_PLACEHOLDER: "Site titel plaatshouder"
+ SITE_TITLE_HELP: "Standaard titel voor uw website, wordt veel gebruikt in thema's"
+ SITE_DEFAULT_LANG: "Standaard taal"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Standaard taal dat gebruikt wordt door de tag van dit thema"
+ SITE_DEFAULT_LANG_HELP: "Standaard taal te gebruiken door thema's tag"
+ DEFAULT_AUTHOR: "Standaard auteur"
+ DEFAULT_AUTHOR_HELP: "Standaard auteursnaam, meestal gebruikt in thema's of pagina-inhoud"
+ DEFAULT_EMAIL: "Standaard e-mail"
+ DEFAULT_EMAIL_HELP: "Een standaard e-mailadres als referentie in thema's of pagina's"
+ TAXONOMY_TYPES: "Taxonomie types"
+ TAXONOMY_TYPES_HELP: "Taxonomie types dienen hier bepaald te worden indien u deze wil gebruiken in pagina's"
+ PAGE_SUMMARY: "Pagina samenvatting"
+ ENABLED: "Ingeschakeld"
+ ENABLED_HELP: "Activeer samenvatting van pagina's (de samenvatting geeft hetzelfde weer als de inhoud van de pagina)"
+ 'YES': "Ja"
+ 'NO': "Nee"
+ SUMMARY_SIZE: "Samenvatting grootte"
+ SUMMARY_SIZE_HELP: "Het aantal karakters van een pagina die gebruikt worden als samenvatting van de inhoud"
+ FORMAT: "Type"
+ FORMAT_HELP: "kort = gebruik het eerste scheidingsteken of grootte = scheidingsteken van de samenvatting zal genegeerd worden"
+ SHORT: "Kort"
+ LONG: "Lang"
+ DELIMITER: "Scheidingsteken"
+ DELIMITER_HELP: "Het scheidingsteken van de samenvatting (standaard '===')"
+ METADATA: "Metadata"
+ METADATA_HELP: "Standaard metadata waardes die weergegeven worden op iedere pagina tenzij deze overschreven worden door de pagina zelf"
+ NAME: "Naam"
+ CONTENT: "Inhoud"
+ SIZE: "Grootte"
+ ACTION: "Actie"
+ REDIRECTS_AND_ROUTES: "Redirects & Routes"
+ CUSTOM_REDIRECTS: "Aangepaste omleidingen"
+ CUSTOM_REDIRECTS_HELP: "Routes om te verwijzen naar andere pagina's. Standaard Regex vervanging is geldig"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/uw/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/uw/doorverwijzing/"
+ CUSTOM_ROUTES: "Aangepaste Routes"
+ CUSTOM_ROUTES_HELP: "routes naar aliassen van andere pagina's. Standaard regex vervangingen zijn geldig"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/uw/alias/"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/uw/route"
+ FILE_STREAMS: "File Streams"
+ DEFAULT: "Standaard"
+ PAGE_MEDIA: "Pagina Media"
+ OPTIONS: "Opties"
+ PUBLISHED: "Gepubliceerd"
+ PUBLISHED_HELP: "Een pagina wordt standaard gepubliceerd tenzij u expliciet published: false meegeeft of indien u de publish_date in de toekomst zet of de unpublish_date in het verleden zet"
+ DATE: "Datum"
+ DATE_HELP: "De datum variabele staat u toe om specifiek een datum in te stellen die geassocieerd is met deze pagina."
+ PUBLISHED_DATE: "Datum van publicatie"
+ PUBLISHED_DATE_HELP: "Kan een datum voorzien om een automatische publicatie te activeren."
+ UNPUBLISHED_DATE: "Datum van niet-publicatie"
+ UNPUBLISHED_DATE_HELP: "Kan een datum voorzien om een automatische de-publicatie te activeren."
+ ROBOTS: "Robots"
+ TAXONOMIES: "Taxonomies"
+ TAXONOMY: "Taxonomie"
+ ADVANCED: "Geavanceerd"
+ SETTINGS: "Instellingen"
+ FOLDER_NUMERIC_PREFIX: "Numeriek voorvoegsel map"
+ FOLDER_NUMERIC_PREFIX_HELP: "Numeriek voorvoegsel dat manuele sortering en zichtbaarheid voorziet"
+ FOLDER_NAME: "Naam van map"
+ FOLDER_NAME_HELP: "De mapnaam dat in het bestandssysteem opgeslaan wordt voor deze pagina"
+ PARENT: "Bovenliggend"
+ DEFAULT_OPTION_ROOT: "-Root-"
+ DEFAULT_OPTION_SELECT: "-Selecteer-"
+ DISPLAY_TEMPLATE: "Toon template"
+ DISPLAY_TEMPLATE_HELP: "Het paginatype dat vertaald in welke twig template de pagina rendert"
+ BODY_CLASSES: "Body klassen"
+ ORDERING: "Volgorde"
+ PAGE_ORDER: "Pagina volgorde"
+ OVERRIDES: "Overschrijvingen"
+ MENU: "Menu"
+ MENU_HELP: "De string zal gebruikt worden in een menu. Indien niet ingesteld zal de titel gebruikt worden."
+ SLUG: "Slug"
+ SLUG_HELP: "De slug variabele laat u toe om een gedeelte van de pagina in de URL te plaatsen"
+ SLUG_VALIDATE_MESSAGE: "De slug mag enkel kleine letters, alfanumerieke karakters en koppeltekens bevatten"
+ PROCESS: "Verwerk"
+ PROCESS_HELP: "Bepaal hoe pagina's verwerkt worden. Kan per pagina ingesteld worden in plaats van globaal"
+ DEFAULT_CHILD_TYPE: "Standaard Child type"
+ USE_GLOBAL: "Gebruik globaal"
+ ROUTABLE: "Routeerbaar"
+ ROUTABLE_HELP: "Indien deze pagina bereikbaar is via een link"
+ CACHING: "Cachen"
+ VISIBLE: "Zichtbaar"
+ VISIBLE_HELP: "Bepaalt of een pagina zichtbaar is in de navigatie."
+ DISABLED: "Uitgeschakeld"
+ ITEMS: "Items"
+ ORDER_BY: "Sorteer op"
+ ORDER: "Volgorde"
+ FOLDER: "Map"
+ ASCENDING: "Oplopend"
+ DESCENDING: "Aflopend"
+ ADD_MODULAR_CONTENT: "Modulaire inhoud toevoegen"
+ PAGE_TITLE: "Pagina titel"
+ PAGE_TITLE_HELP: "De titel van de pagina"
+ PAGE: "Pagina"
+ MODULAR_TEMPLATE: "Modulair sjabloon"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Bestandsnaam"
+ PARENT_PAGE: "Bovenliggende pagina"
+ HOME_PAGE: "Homepage"
+ HOME_PAGE_HELP: "De beginpagina van de site"
+ DEFAULT_THEME: "Standaard thema"
+ DEFAULT_THEME_HELP: "Stel het standaard thema in voor Grav (standaard is Antimatter geactiveerd)"
+ TIMEZONE: "Tijdzone"
+ TIMEZONE_HELP: "Overschrijf de standaard tijdzonde van de server"
+ SHORT_DATE_FORMAT: "Korte datum notatie"
+ SHORT_DATE_FORMAT_HELP: "Instellen van de korte datum notatie die kan gebruikt worden door thema's"
+ LONG_DATE_FORMAT: "Lange datumnotatie"
+ LONG_DATE_FORMAT_HELP: "Instellen van de lange datum notatie die kan gebruikt worden door thema's"
+ DEFAULT_ORDERING: "Standaard volgorde"
+ DEFAULT_ORDERING_HELP: "Pagina's in een lijst zullen weergegeven worden in deze volgorde tenzij deze overschreven wordt"
+ DEFAULT_ORDERING_DEFAULT: "Standaard - gebaseerd op mapnaam"
+ DEFAULT_ORDERING_FOLDER: "Map - gebaseerd op mapnaam zonder voorvoegsel"
+ DEFAULT_ORDERING_TITLE: "Titel - gebaseerd op titel veld in de header"
+ DEFAULT_ORDERING_DATE: "Datum - gebaseerd op datum veld in de header"
+ DEFAULT_ORDER_DIRECTION: "Standaard sorteer volgorde"
+ DEFAULT_ORDER_DIRECTION_HELP: "De richting van pagina's in een lijst"
+ DEFAULT_PAGE_COUNT: "Standaard aantal pagina's"
+ DEFAULT_PAGE_COUNT_HELP: "Standaard maximum aantal pagina's in een lijst"
+ DATE_BASED_PUBLISHING: "Publiceren op basis van datum"
+ DATE_BASED_PUBLISHING_HELP: "Automatische (niet-)publicatie van artikels gebaseerd op hun datum"
+ EVENTS: "Gebeurtenissen"
+ EVENTS_HELP: "Inschakelen of uitschakelen van specifieke gebeurtenissen. Het uitschakelen ervan kan plugins breken"
+ REDIRECT_DEFAULT_ROUTE: "Omleiden van standaard route"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Stuur automatisch door naar de standaard route van een pagina"
+ LANGUAGES: "Talen"
+ SUPPORTED: "Ondersteund"
+ SUPPORTED_HELP: "Door komma's gescheiden lijst van tweeletterige taalcodes (bijvoorbeeld 'en,fr,de')"
+ TRANSLATIONS_ENABLED: "Vertalingen ingeschakeld"
+ TRANSLATIONS_ENABLED_HELP: "Ondersteun vertalingen in Grav, Plugins en Extensies"
+ TRANSLATIONS_FALLBACK: "Noodoplossing vertalingen"
+ TRANSLATIONS_FALLBACK_HELP: "Terugvallen op ondersteunde vertaling als de actieve taal niet bestaat"
+ ACTIVE_LANGUAGE_IN_SESSION: "Actieve taal in sessie"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "De actieve taal opslaan in de sessie"
+ HTTP_HEADERS: "HTTP Headers"
+ EXPIRES: "Verloopt"
+ EXPIRES_HELP: "Stel de expires header in. De waarde is in seconden."
+ CACHE_CONTROL: "HTTP Cache-Control"
+ CACHE_CONTROL_HELP: "Zet naar een geldige cache-control waarde zoals `no-cache, no-store, must-revalidate`"
+ LAST_MODIFIED: "Laatst gewijzigd"
+ LAST_MODIFIED_HELP: "Stel de last modified header in die kan helpen voor het optimaliseren van proxy en browser caching"
+ ETAG: "ETag"
+ ETAG_HELP: "Stel de etag header in die kan helpen identificeren wanneer een pagina aangepast is"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Stel de 'Vary: Accept Encoding' header in die kan helpen bij proxy en CDN caching"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Markdown Extra"
+ MARKDOWN_EXTRA_HELP: "Activeer standaard ondersteuning voor Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Escape HTML elementen in Markdown Extra omheiningen"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Escapes HTML elementen in Markdown Extra omheiningen"
+ AUTO_LINE_BREAKS: "Automatische regeleinden"
+ AUTO_LINE_BREAKS_HELP: "Activeer ondersteuning voor automatische regeleinden in markdown"
+ AUTO_URL_LINKS: "Automatische URL koppelingen"
+ AUTO_URL_LINKS_HELP: "Activeer automatische conversie van URLs naar HTML hyperlinks"
+ ESCAPE_MARKUP: "Markup escapen"
+ ESCAPE_MARKUP_HELP: "Markup tags escapen naar HTML entiteiten"
+ CACHING_HELP: "Globale AAN/UIT schakelaar om Grav caching in/uit te schakelen"
+ CACHE_CHECK_METHOD: "Cache check methode"
+ CACHE_CHECK_METHOD_HELP: "Selecteer de methode die Grav gebruikt om te controleren of bestanden van een pagina aangepast zijn."
+ CACHE_DRIVER: "Cache driver"
+ CACHE_DRIVER_HELP: "Selecteer de cache driver die Grav moet gebruiken. 'Auto Detect' probeert de beste te vinden voor jou"
+ CACHE_PREFIX: "Cache voorvoegsel"
+ CACHE_PREFIX_HELP: "Identificatie voor een gedeelte van de Grav key. Wijzig dit niet indien u weet waar u mee bezig bent."
+ CACHE_PREFIX_PLACEHOLDER: "Afgeleid van de basis URL (overschrijf deze door een willekeurige tekst in te geven)"
+ LIFETIME: "Levensduur"
+ LIFETIME_HELP: "Stel de levensduur van de cache in, in seconden. 0 = oneindig"
+ GZIP_COMPRESSION: "Gzip compressie"
+ GZIP_COMPRESSION_HELP: "Gzip compressie activeren voor betere prestaties."
+ TWIG_TEMPLATING: "Twig templating"
+ TWIG_CACHING: "Twig caching"
+ TWIG_CACHING_HELP: "Controleer het Twig caching mechanisme. Laat dit ingeschakeld voor de beste prestaties."
+ TWIG_DEBUG: "Twig Debug"
+ TWIG_DEBUG_HELP: "Voorzie de mogelijkheid om de Twig Debugger extensie niet in te laden"
+ DETECT_CHANGES: "Detecteer wijzigingen"
+ DETECT_CHANGES_HELP: "Twig zal automatisch de Twig cache hercompileren zodra het wijzigingen in de Twig templates detecteert"
+ AUTOESCAPE_VARIABLES: "Autoescape variabelen"
+ AUTOESCAPE_VARIABLES_HELP: "Autoescape alle variabelen. Dit zal hoogstwaarschijnlijk uw site breken"
+ ASSETS: "Assets"
+ CSS_PIPELINE: "CSS pipeline"
+ CSS_PIPELINE_HELP: "De CSS pipeline is de éénmaking van meerdere CSS-bronnen naar één bestand"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Opnemen van externe bestanden in CSS pipeline"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Externe URLs hebben soms relatieve bestandsverwijzingen en mogen niet in pipeline opgenomen worden"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "CSS pipeline render eerst"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Render de CSS pipeline voor andere CSS referenties die niet zijn opgenomen"
+ CSS_MINIFY: "CSS verkleinen"
+ CSS_MINIFY_HELP: "CSS verkleinen tijdens het pipelinen"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "CSS verkleinen Windows overschrijving"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Overschrijven voor Windows platformen beperken. Standaardwaarde is False door de ThreadStackSize"
+ CSS_REWRITE: "CSS herschrijven"
+ CSS_REWRITE_HELP: "Herschrijf alle URL gerelateerde CSS tijdens het pipelinen"
+ JAVASCRIPT_PIPELINE: "JavaScript pipeline"
+ JAVASCRIPT_PIPELINE_HELP: "De JavaScript pipeline is de éénmaking van meerdere JavaScript-bronnen in één bestand"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Opnemen van externe bestanden in JavaScript pipeline"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Externe URLs hebben soms relatieve bestandsverwijzingen en mogen niet in de pipeline opgenomen worden"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "JavaScript pipeline render eerst"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Render eerst de JavaScript pipeline voor andere JavaScript referenties die niet zijn opgenomen"
+ JAVASCRIPT_MINIFY: "JavaScript verkleinen"
+ JAVASCRIPT_MINIFY_HELP: "JavaScript verkleinen tijdens het pipelinen"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Tijdstempels activeren op assets"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Tijdstempels activeren op assets"
+ COLLECTIONS: "Collecties"
+ ERROR_HANDLER: "Foutafhandeling"
+ DISPLAY_ERRORS: "Errors weergeven"
+ DISPLAY_ERRORS_HELP: "Volledige backtrace-stijl foutpagina weergeven"
+ LOG_ERRORS: "Errors bewaren"
+ LOG_ERRORS_HELP: "Errors in de /logs map bewaren"
+ DEBUGGER: "Debugger"
+ DEBUGGER_HELP: "Grav Debugger activeren met de volgende instellingen"
+ DEBUG_TWIG: "Twig Debuggen"
+ DEBUG_TWIG_HELP: "Debuggen van Twig templates activeren"
+ SHUTDOWN_CLOSE_CONNECTION: "Connectie afsluiten"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "De verbinding afsluiten voor het oproepen van onShutdown(). False voor debuggen"
+ DEFAULT_IMAGE_QUALITY: "Standaard afbeeldingskwaliteit"
+ DEFAULT_IMAGE_QUALITY_HELP: "Standaardkwaliteit die gebruikt zal worden bij het resamplen of cachen van afbeeldingen (85%)"
+ CACHE_ALL: "Alle afbeeldingen cachen"
+ CACHE_ALL_HELP: "Verwerk alle afbeeldingen met het Grav cache systeem, zelfs als er geen aanpassingen aan gebeurd zijn"
+ IMAGES_DEBUG: "Debug watermerk op afbeelding"
+ IMAGES_DEBUG_HELP: "Bedek de afbeeldingen met een laag die de pixel diepte van de afbeelding weergeeft wanneer er met bijvoorbeeld retina gewerkt wordt"
+ UPLOAD_LIMIT: "Bestand upload limiet"
+ UPLOAD_LIMIT_HELP: "Stel de maximum upload grootte in, in bytes. (0 is onbeperkt)"
+ ENABLE_MEDIA_TIMESTAMP: "Tijdstempels op media activeren"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Voeg een tijdstempel toe, gebaseerd op het tijdstip van de laatste wijziging van elk media-item"
+ SESSION: "Sessie"
+ SESSION_ENABLED_HELP: "Sessie ondersteuning activeren in Grav"
+ TIMEOUT: "Timeout"
+ TIMEOUT_HELP: "Sessie timeout instellen in seconden"
+ SESSION_NAME_HELP: "Een id die gebruikt wordt om de naam van de sessie cookie op te bouwen"
+ ABSOLUTE_URLS: "Absolute URLs"
+ ABSOLUTE_URLS_HELP: "Absolute of relatieve URLs voor de 'base_url'"
+ PARAMETER_SEPARATOR: "Parameter scheidingsteken"
+ PARAMETER_SEPARATOR_HELP: "Scheidingsteken voor doorgegeven van parameters die gewijzigd kunnen worden voor Apache op Windows"
+ TASK_COMPLETED: "Taak uitgevoerd"
+ EVERYTHING_UP_TO_DATE: "Alles is up-to-date"
+ UPDATES_ARE_AVAILABLE: "update(s) beschikbaar"
+ IS_AVAILABLE_FOR_UPDATE: "is beschikbaar voor update"
+ IS_NOW_AVAILABLE: "is nu beschikbaar"
+ CURRENT: "Huidige"
+ UPDATE_GRAV_NOW: "Grav nu updaten"
+ GRAV_SYMBOLICALLY_LINKED: "Grav is symbolisch gekoppeld. Upgraden is niet mogelijk"
+ UPDATING_PLEASE_WAIT: "Aan het updaten.. even geduld a.u.b., aan het downloaden"
+ OF_THIS: "van dit"
+ OF_YOUR: "van uw"
+ HAVE_AN_UPDATE_AVAILABLE: "hebben een update beschikbaar"
+ SAVE_AS: "Opslaan als"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Bent u zeker dat u deze pagina en subpagina's wil verwijderen? Indien deze pagina vertaald is in andere talen dan blijven deze vertalingen behouden en dienen deze afzonderlijk gewist te worden. Anders zal de paginamap met alle subpagina's verwijderd worden. Deze actie kan niet ongedaan gemaakt worden."
+ AND: "en"
+ UPDATE_AVAILABLE: "Update beschikbaar"
+ METADATA_KEY: "Key (bvb. 'Zoektermen')"
+ METADATA_VALUE: "Value (bvb. 'Blog, Grav')"
+ USERNAME_HELP: "De gebruikersnaam dient tussen 3 en 16 karakters lang te zijn. Inclusief kleine letters, nummers, underscores en koppeltekens. Grote letters, spaties en speciale karakters zijn niet toegestaan"
+ FULLY_UPDATED: "Volledig bijgewerkt"
+ SAVE_LOCATION: "Opslaglocatie"
+ PAGE_FILE: "Pagina sjabloon"
+ PAGE_FILE_HELP: "Template bestandsnaam en wordt standaard het template voor deze pagina"
+ NO_USER_ACCOUNTS: "Geen gebruikersaccounts gevonden, gelieve er eerst één aan te maken..."
+ REDIRECT_TRAILING_SLASH: "Verwijs nakomende slash"
+ REDIRECT_TRAILING_SLASH_HELP: "Voer een 301-omleiding uit in plaats van het transparant afhandelen van nakomende slash URIs."
+ DEFAULT_DATE_FORMAT: "Datum formaat van pagina"
+ DEFAULT_DATE_FORMAT_HELP: "Datumformaat voor pagina's gebruikt door Grav. Grav zal standaard proberen het datum formaat te raden, u kan echter een formaat instellen volgens de PHP datum syntax (bvb.: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Raad automatisch"
+ IGNORE_FILES: "Negeer bestanden"
+ IGNORE_FILES_HELP: "Specifieer bestanden die genegeerd zullen worden bij het verwerken van pagina's"
+ IGNORE_FOLDERS: "Negeer mappen"
+ IGNORE_FOLDERS_HELP: "Specifieke mappen die genegeerd zullen worden bij het verwerken van pagina's"
+ HTTP_ACCEPT_LANGUAGE: "Taal van browser instellen"
+ HTTP_ACCEPT_LANGUAGE_HELP: "U kan ervoor kiezen om de taal in te stellen gebaseerd op de 'http_accept_language' header tag in de browser"
+ OVERRIDE_LOCALE: "Overschrijf 'locale'"
+ OVERRIDE_LOCALE_HELP: "Overschrijf de 'locale' instelling in PHP gebaseerd op de huidige taal"
+ REDIRECT: "Pagina doorverwijzing"
+ REDIRECT_HELP: "Voer een pagina route of externe URL in, om deze pagina naar te verwijzen. bvb. '/een/route' of 'http://somesite.com'"
+ PLUGIN_STATUS: "Plugin status"
+ INCLUDE_DEFAULT_LANG: "Standaardtaal meerekenen"
+ INCLUDE_DEFAULT_LANG_HELP: "Dit zal aan alle URLs in de standaardtaal, de standaardtaal toevoegen. bvb. 'nl/blog/mijn-artikel'"
+ ALLOW_URL_TAXONOMY_FILTERS: "URL taxonomie filters"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Met collecties gebaseerd op pagina's kan u filteren via '/taxonomie:waarde'."
+ REDIRECT_DEFAULT_CODE: "Standaard doorverwijscode"
+ REDIRECT_DEFAULT_CODE_HELP: "De HTTP status code die gebruikt zal worden voor doorverwijzingen"
+ IGNORE_HIDDEN: "Negeer verborgen"
+ IGNORE_HIDDEN_HELP: "Negeer alle bestanden en mappen die beginnen met een PUNT"
+ WRAPPED_SITE: "Omhulde site"
+ WRAPPED_SITE_HELP: "Voor /themes/plugins om te weten of Grav in een ander platform verwikkeld is"
+ FALLBACK_TYPES: "Toegestane types om op terug te vallen"
+ FALLBACK_TYPES_HELP: "Toegestane bestandstypes die gevonden kunnen worden als ze opgeroepen worden via pagina route. Verwijst standaard naar ieder ondersteund mediatype."
+ INLINE_TYPES: "Inline types om op terug te vallen"
+ INLINE_TYPES_HELP: "Lijst met bestandstypes die inline weergegeven worden in plaats van gedownload te worden"
+ APPEND_URL_EXT: "URL extensie toevoegen"
+ APPEND_URL_EXT_HELP: "Voegt een aangepaste extensie toe aan de pagina URLs. Let op, dit betekent dat Grav zal zoeken naar de '..twig' template"
+ PAGE_MODES: "Pagina modes"
+ PAGE_TYPES: "Pagina types"
+ ACCESS_LEVELS: "Toegangsniveaus"
+ GROUPS: "Groepen"
+ GROUPS_HELP: "Lijst van groepen waar de gebruiker deel van uitmaakt"
+ ADMIN_ACCESS: "Beheerder toegang"
+ SITE_ACCESS: "Toegang tot de site"
+ INVALID_SECURITY_TOKEN: "Ongeldige Security Token"
+ ACTIVATE: "Activeer"
+ TWIG_UMASK_FIX: "Umask fix"
+ TWIG_UMASK_FIX_HELP: "Standaard maakt Twig gecachete bestanden aan zoals 0755, de fix wijzigt dit naar 0775"
+ CACHE_PERMS: "Cache toestemmingen"
+ CACHE_PERMS_HELP: "Standaard cache map machtigingen. Doorgaans 0755 of 0775 afhankelijk van de configuratie"
+ REMOVE_SUCCESSFUL: "Met succes verwijderd"
+ REMOVE_FAILED: "Verwijderen mislukt"
+ HIDE_HOME_IN_URLS: "Verberg home route in URLs"
+ HIDE_HOME_IN_URLS_HELP: "Zorgt ervoor dat de standaard routes voor alle pagina's onder home niet verwijzen naar de gewone route voor home"
+ TWIG_FIRST: "Twig eerst verwerken"
+ TWIG_FIRST_HELP: "Indien u Twig pagina verwerking geactiveerd heeft dan kan u Twig configureren om te verwerken voor of na Markdown"
+ SESSION_SECURE: "Veilig"
+ SESSION_SECURE_HELP: "Als de waarde true is, dan wordt er aangegeven dat communicatie voor deze cookie over een beveiligde verbinding zal gebeuren. WAARSCHUWING: activeer deze optie enkel voor websites die enkel over HTTPS lopen"
+ SESSION_HTTPONLY: "HTTP Only"
+ SESSION_HTTPONLY_HELP: "Indien de waarde true is, geef dan aan, dat cookies enkel over HTTP gebruikt zullen worden en dat JavaScript wijzigingen niet toegestaan zijn"
+ REVERSE_PROXY: "Reverse Proxy"
+ REVERSE_PROXY_HELP: "Activeer dit indien u zich achter een reverse proxy bevind en indien u problemen heeft met URLs die ongeldige poorten bevatten"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Ongeldige Frontmatter, opslaan mislukt"
+ ADD_FOLDER: "Map toevoegen"
+ PROXY_URL: "Proxy URL"
+ PROXY_URL_HELP: "Geef de proxy HOST of IP en POORT in"
+ NOTHING_TO_SAVE: "Niets om op te slaan"
+ FILE_ERROR_ADD: "Er is een fout opgetreden tijdens het toevoegen van het bestand"
+ FILE_ERROR_UPLOAD: "Er is een fout opgetreden tijdens het uploaden van het bestand"
+ FILE_UNSUPPORTED: "Niet ondersteund bestandstype "
+ ADD_ITEM: "Toevoegen"
+ FILE_TOO_LARGE: "Het bestand is te groot om upgeload te worden, maximaal toegestane grootte is %s volgens uw PHP instellingen. Verhoog uw 'post_max_size' PHP instelling"
+ INSTALLING: "Bezig met installeren"
+ LOADING: "Laden.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "De volgende afhankelijkheden moeten eerst worden voldaan:"
+ ERROR_INSTALLING_PACKAGES: "Fout tijdens het installeren van pakket(ten)"
+ INSTALLING_DEPENDENCIES: "Afhankelijkheden installeren..."
+ INSTALLING_PACKAGES: "Pakket(ten) wordt/worden geïnstalleerd.."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Pakket(ten) succesvol geïnstalleerd."
+ READY_TO_INSTALL_PACKAGES: "Klaar om pakket(ten) te installeren"
+ PACKAGES_NOT_INSTALLED: "Pakket(ten) niet geïnstalleerd"
+ PACKAGES_NEED_UPDATE: "Pakket(ten) reeds geïnstalleerd, maar updates zijn nodig"
+ PACKAGES_SUGGESTED_UPDATE: "Pakketten reeds geïnstalleerd en versie is in orde, maar ze zullen worden bijgewerkt om u up-to-date te houden"
+ REMOVE_THE: "Verwijder de %s"
+ CONFIRM_REMOVAL: "Weet je zeker dat je deze %s wilt verwijderen"
+ REMOVED_SUCCESSFULLY: "%s succesvol verwijderd"
+ ERROR_REMOVING_THE: "Fout tijdens het verwijderen van de %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "De %s vereist de volgende afhankelijkheden die niet benodigd zijn voor andere geïnstalleerde pakketten. Als die niet gebruikt worden, kunt u ze rechtstreeks hier vandaan verwijderen."
+ READY_TO_UPDATE_PACKAGES: "Klaar om pakket(ten) bij te werken"
+ ERROR_UPDATING_PACKAGES: "Fout tijdens het bijwerken van pakket(ten)"
+ UPDATING_PACKAGES: "Bijwerken van pakket(ten).."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Pakket(ten) succesvol bijgewerkt."
+ UPDATING: "Bijwerken"
+ GPM_RELEASES: "GPM Releases"
+ GPM_RELEASES_HELP: "Kies 'Testen' om Beta/Test versies te installeren"
+ GPM_METHOD: "Externe Fetch methode"
+ GPM_METHOD_HELP: "Wanneer ingesteld op Auto, zal Grav bepalen of 'fopen' beschikbaar en bruikbaar is, anders zal het terugvallen op 'cURL'. Om één van beide af te dwingen kan je deze selecteren."
+ GPM_VERIFY_PEER: "Externe controle (SSL)"
+ GPM_VERIFY_PEER_HELP: "Sommige providers kunnen het getgrav.org SSL-certificaat niet verifiëren, waardoor de GPM niet werkt. Als dit het geval is, kan het uitschakelen van deze instelling helpen"
+ AUTO: "Automatisch"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabiel"
+ TESTING: "Testen"
+ FRONTMATTER_PROCESS_TWIG: "Verwerk Frontmatter Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Wanneer ingeschakeld, kunt u Twig config variabelen gebruiken in Frontmatter op de pagina"
+ FRONTMATTER_IGNORE_FIELDS: "Negeer Frontmatter velden"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Bepaalde Frontmatter velden kunnen Twig bevatten maar moeten niet verwerkt worden, zoals 'forms'"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Pakket %s succesvol geïnstalleerd"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Volgorde bepaald door bovenliggende pagina, volgorde uitgeschakeld"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Pagina is niet zichtbaar, sorteren gedeactiveerd"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Volgordebepaling via de admin is niet beschikbaar bij meer dan 200 items"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Pagina volgorde is uitgeschakeld voor deze pagina aangezien Folder Numeric Prefix niet ingeschakeld is"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "Let op: U kunt geen media toevoegen voordat u de pagina heeft opgeslagen. Klik op 'opslaan' bovenaan de pagina"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "Let op: De pagina moet worden opgeslagen voordat u bestanden kunt uploaden."
+ DROP_FILES_HERE_TO_UPLOAD: "Sleep je bestanden hier of klik in deze regio"
+ INSERT: "Invoegen"
+ UNDO: "Ongedaan maken"
+ REDO: "Herhalen"
+ HEADERS: "Koppen"
+ BOLD: "Vet"
+ ITALIC: "Cursief"
+ STRIKETHROUGH: "Doorhalen"
+ SUMMARY_DELIMITER: "Scheidingsteken voor samenvatting"
+ LINK: "Link"
+ IMAGE: "Afbeelding"
+ BLOCKQUOTE: "Citaatblok"
+ UNORDERED_LIST: "Ongeordende lijst"
+ ORDERED_LIST: "Geordende lijst"
+ EDITOR: "Bewerker"
+ PREVIEW: "Voorbeeld"
+ FULLSCREEN: "Volledig scherm"
+ MODULAR: "Modulair"
+ NON_ROUTABLE: "Niet routable"
+ NON_MODULAR: "Niet modulair"
+ NON_VISIBLE: "Niet zichtbaar"
+ NON_PUBLISHED: "Niet gepubliceerd"
+ CHARACTERS: "Tekens"
+ PUBLISHING: "Publiceren"
+ NOTIFICATIONS: "Notificaties"
+ MEDIA_TYPES: "Media types"
+ IMAGE_OPTIONS: "Afbeelding opties"
+ MIME_TYPE: "MIME type"
+ THUMB: "Miniatuur"
+ TYPE: "Type"
+ FILE_EXTENSION: "Bestandsextensie"
+ LEGEND: "Paginalegenda"
+ MEMCACHE_SERVER: "Memcache-server"
+ MEMCACHE_SERVER_HELP: "Het Memcache-serveradres"
+ MEMCACHE_PORT: "Memcache-poort"
+ MEMCACHE_PORT_HELP: "De Memcache-serverpoort"
+ MEMCACHED_SERVER: "Memcached-server"
+ MEMCACHED_SERVER_HELP: "Het Memcached-serveradres"
+ MEMCACHED_PORT: "Memcached-poort"
+ MEMCACHED_PORT_HELP: "De Memcached-serverpoort"
+ REDIS_SERVER: "Redis-server"
+ REDIS_SERVER_HELP: "Het Redis-serveradres"
+ REDIS_PORT: "Redis-poort"
+ REDIS_PORT_HELP: "De Redis-serverpoort"
+ REDIS_PASSWORD: "Redis paswoord/geheim"
+ ALL: "Alle"
+ FROM: "van"
+ TO: "aan"
+ RELEASE_DATE: "Verschijningsdatum"
+ SORT_BY: "Sorteren op"
+ RESOURCE_FILTER: "Filter..."
+ FORCE_SSL: "SSL forceren"
+ FORCE_SSL_HELP: "Globaal SSL forceren, als dit is ingeschakeld, word al het verkeer via HTTP door Grav omgeleid naar HTTPS"
+ NEWS_FEED: "Nieuws Feed"
+ EXTERNAL_URL: "Externe URL"
+ SESSION_PATH: "Folder voor sessies"
+ SESSION_PATH_HELP: "Alleen gebruiken als u een aangepaste URL wil (u herschrijft het domein / submap van de website)"
+ CUSTOM_BASE_URL: "Aangepaste basis-URL"
+ CUSTOM_BASE_URL_HELP: "Gebruiken als u het domein van de website wilt overschrijven. Of gebruik wilt maken van een andere submap dan degene die standaard gebruikt wordt door Grav. Voorbeeld: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Mag geen gebruik maken van %s buiten de pagina''s.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Kan het bestand %s niet uploaden: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Kan het bestand %s niet verplaatsen naar %s'
+ DROPZONE_CANCEL_UPLOAD: 'Annuleer upload'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Weet u zeker dat u deze upload wilt annuleren?'
+ DROPZONE_DEFAULT_MESSAGE: 'Sleep je bestanden hier of klik in deze regio'
+ DROPZONE_FALLBACK_MESSAGE: 'Uw browser ondersteunt deze methode van uploaden niet.'
+ DROPZONE_FALLBACK_TEXT: 'Gebruik onderstaand fallback formulier om uw bestanden te uploaden, zoals in de goede oude tijd.'
+ DROPZONE_FILE_TOO_BIG: 'Bestand is te groot ({{filesize}}MiB). Max bestandsgrootte: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "U kunt geen bestanden van dit type uploaden."
+ DROPZONE_MAX_FILES_EXCEEDED: "U kunt niet nog meer bestanden uploaden."
+ DROPZONE_REMOVE_FILE: "Verwijder bestand"
+ DROPZONE_RESPONSE_ERROR: "Server reageerde met code {{statusCode}}."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Admin Caching inschakelen"
+ ADMIN_CACHING_HELP: "Caching van de admin kan onafhankelijk van de front-end site beheerd worden"
+ DESTINATION_NOT_SPECIFIED: "Bestemming niet gespecificeerd"
+ UPLOAD_ERR_NO_TMP_DIR: "Tijdelijke map ontbreekt"
+ SESSION_SPLIT: "Sessie Split"
+ SESSION_SPLIT_HELP: "Onafhankelijke sessie-splits tussen site en andere plugins (zoals admin)"
+ ERROR_FULL_BACKTRACE: "Volledige Backtrace fout"
+ ERROR_SIMPLE: "Simpele fout"
+ ERROR_SYSTEM: "Systeemfout"
+ IMAGES_AUTO_FIX_ORIENTATION: "Herstel oriëntatie automatisch"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Herstel de oriëntatie van de afbeelding automatisch op basis van Exif data"
+ REDIS_SOCKET: "Redis socket"
+ REDIS_SOCKET_HELP: "De Redis socket"
+ NOT_SET: "Niet ingesteld"
+ PERMISSIONS: "Rechten"
+ NEVER_CACHE_TWIG: "Nooit Twig cachen"
+ NEVER_CACHE_TWIG_HELP: "Cache enkel de inhoud en verwerk Twig telkens voor pagina's. Negeert twig_first instelling."
+ ALLOW_WEBSERVER_GZIP: "Sta WebServer Gzip toe"
+ ALLOW_WEBSERVER_GZIP_HELP: "Standaard uitgeschakeld. Indien ingeschakeld, zal WebServer-geconfigureerde Gzip / deflate compressie werken, maar http-verbinding zal niet worden gesloten voordat onShutDown() event waardoor het laden van pagina's traag zal worden"
+ OFFLINE_WARNING: "Kan geen verbinding met de GPM maken"
+ CLEAR_IMAGES_BY_DEFAULT: "Image cache standaard verwijderen"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Standaard worden alle afbeeldingen bij alle cache clears verwijderd, dit kan uitgeschakeld worden"
+ CLI_COMPATIBILITY: "CLI-compatibiliteit"
+ CLI_COMPATIBILITY_HELP: "Zorgt ervoor dat alleen niet-vluchtige Cache drivers gebruikt worden (bestand, redis, memcache, enz.)"
+ REINSTALL_PLUGIN: "Plugin herinstalleren"
+ REINSTALL_THEME: "Thema herinstalleren"
+ REINSTALL_THE: "%s herinstalleren"
+ CONFIRM_REINSTALL: "Weet je zeker dat je %s opnieuw wil installeren?"
+ REINSTALLED_SUCCESSFULLY: "%s is succesvol opnieuw geïnstalleerd"
+ ERROR_REINSTALLING_THE: "Fout opgetreden bij het herinstalleren van %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Pakket %s succesvol geïnstalleerd"
+ REINSTALLATION_FAILED: "Installatie mislukt"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "De geïnstalleerde versie is niet de nieuwste versie. Door op 'doorgaan' te klikken, wordt de huidige versie verwijderd en de nieuwste versie geïnstalleerd"
+ TOOLS: "Gereedschap"
+ DIRECT_INSTALL: "Direct installeren"
+ NO_PACKAGE_NAME: "De naam van het pakket is niet vermeld"
+ PACKAGE_EXTRACTION_FAILED: "Pakket uitpakken is mislukt"
+ NOT_VALID_GRAV_PACKAGE: "Dit is geen geldig Grav pakket"
+ NAME_COULD_NOT_BE_DETERMINED: "Naam kon niet worden vastgesteld"
+ CANNOT_OVERWRITE_SYMLINKS: "Symlinks kunnen niet overschreven worden."
+ ZIP_PACKAGE_NOT_FOUND: "ZIP bestand kan niet gevonden worden"
+ GPM_OFFICIAL_ONLY: "Alleen officiële GPM"
+ GPM_OFFICIAL_ONLY_HELP: "Sta directe installaties alleen toe van de officiële GPM repository."
+ NO_CHILD_TYPE: "Er is geen child type voor deze raw route"
+ SORTABLE_PAGES: "Sorteerbare pagina's:"
+ UNSORTABLE_PAGES: "Niet sorteerbare pagina's:"
+ ADMIN_SPECIFIC_OVERRIDES: "Admin specifieke overschrijvingen"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Volgorde van weergave"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "De volgorde van de onderliggende pagina's moeten worden weergegeven in 'Pagina's' van de Admin plugin"
+ PWD_PLACEHOLDER: "Complexe string van minstens 8 tekens lang"
+ PWD_REGEX: "Wachtwoord Regex"
+ PWD_REGEX_HELP: "Wachtwoord moet ten minste één nummer, één hoofdletter, één kleine letter en minstens 8 of meer tekens bevatten"
+ USERNAME_PLACEHOLDER: "Enkel kleine tekens, bijvoorbeeld 'admin'"
+ USERNAME_REGEX: "Gebruikersnaam Regex"
+ USERNAME_REGEX_HELP: "Standaard: enkel kleine letters, tekens, cijfers, streepjes en onderstrepingstekens. 3 - 16 tekens"
+ CONTENT_PADDING: "Opvulling van inhoud"
+ CONTENT_PADDING_HELP: "Uit- of aanzetten van content padding rond de content om meer ruimte te creëren"
+ ENABLE_AUTO_METADATA: "Automatische metadata van Exif"
+ ENABLE_AUTO_METADATA_HELP: "Genereer metadata bestanden automatisch voor afbeeldingen met exif informatie"
+ 2FA_TITLE: "2-Factor Authenticatie"
+ 2FA_INSTRUCTIONS: "##### 2-Factor Authenticatie\nJe hebt **2FA** aanstaan op dit account. Gebruik je **2FA** App om de huidige **6-digit code** te gebruiken om het login proces te voltooien"
+ 2FA_REGEN_HINT: "Het hergenereren van het geheim zal vereisen dat je de Authenticatie App moet updaten"
+ 2FA_LABEL: "Admin Toegang"
+ 2FA_FAILED: "Ongeldige 2-Factor Autenticatie code, probeer het opnieuw.."
+ 2FA_ENABLED: "2FA Ingeschakeld"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "2FA Geheim"
+ 2FA_SECRET_HELP: "Scan deze QR code in op je [Authenticatie App](https://learn.getgrav.org/admin-panel/2fa#apps). Het is ook een goed idee om van het geheim een backup te nemen op een veilige lokatie, in geval dat je de app zou moeten herinstalleren. Check de [Grav documentatie](https://learn.getgrav.org/admin-panel/2fa) voor meer informatie"
+ 2FA_REGENERATE: "Hergenereer"
+ FORCE_LOWERCASE_URLS: "Forceer 'lowercase' URLs"
+ FORCE_LOWERCASE_URLS_HELP: "Standaard zal Grav alle slugs en routes in 'lowercase' zetten. Met dit uitgeschakeld te zetten, zullen 'uppercase' slugs en routes gebruikt kunnen worden"
+ INTL_ENABLED: "Intl module integratie"
+ INTL_ENABLED_HELP: "Gebruik Intl PHP module en vergelijk om UTF8 gebaseerde collecties te sorteren"
+ VIEW_SITE_TIP: "Bekijk site"
+ TOOLS_DIRECT_INSTALL_TITLE: "Snelle installatie van Grav packages"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Installeer package door een ZIP te uploaden"
+ TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "U kunt gemakkelijk een geldig Grav thema of plugin installeren, of zelfs Grav updaten door de ZIP package met deze methode. Deze package moet niet geregistreerd worden door de GPM en laat toe dat je makkelijk kunt terugrollen naar een eerdere versie of installatie om te testen."
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Installeer package via URL referentie"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Als alternatief kunt u ook een volledige URL refereren naar het ZIP bestand van de package en het installeren via die URL."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Upload en installeer"
+ ROUTE_OVERRIDES: "Route overschrijvingen"
+ ROUTE_DEFAULT: "Standaard Route"
+ ROUTE_CANONICAL: "Oorspronkelijke Route"
+ ROUTE_ALIASES: "Route pseudoniemen"
+ OPEN_NEW_TAB: "Openen in nieuwe tab"
+ SCHEDULER_NOT_ENABLED: "Niet Ingeschakeld"
+ SECURITY: "Veiligheid"
+ XSS_SECURITY: "XSS Veiligheid voor Inhoud"
+ XSS_WHITELIST_PERMISSIONS: "Whitelist Machtigingen"
+ XSS_MOZ_BINDINGS: "Filter Moz bindingen"
+ XSS_HTML_INLINE_STYLES: "Filter HTML inline-stijlen"
+ XSS_DANGEROUS_TAGS: "Filter gevaarlijke HTML-codes"
+ XSS_DANGEROUS_TAGS_LIST: "Lijst van gevaarlijke HTML-tags"
+ UPLOADS_DANGEROUS_EXTENSIONS: "Gevaarlijke Extensies"
+ REPORTS: "Rapportages"
diff --git a/user/plugins/admin/languages/no.yaml b/user/plugins/admin/languages/no.yaml
new file mode 100644
index 0000000..689a6fc
--- /dev/null
+++ b/user/plugins/admin/languages/no.yaml
@@ -0,0 +1,686 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Dette er en betaversjon! Bruk denne i produksjon på egen risiko..."
+ ADMIN_REPORT_ISSUE: "Oppdaget et problem? Vennligst rapport det på GitHub."
+ EMAIL_FOOTER: "Drevet av Grav - Det moderne flat file CMSet"
+ LOGIN_BTN: "Logg inn"
+ LOGIN_BTN_FORGOT: "Glemt"
+ LOGIN_BTN_RESET: "Nullstill passord"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Sende tilbakestillingsintruksjoner"
+ LOGIN_BTN_CLEAR: "Tøm skjema"
+ LOGIN_BTN_CREATE_USER: "Opprett bruker"
+ LOGIN_LOGGED_IN: "Innloggingen var vellykket"
+ LOGIN_FAILED: "Innloggingen feilet"
+ LOGGED_OUT: "Du har nå logget ut"
+ RESET_NEW_PASSWORD: "Skriv inn et nytt passord …"
+ RESET_LINK_EXPIRED: "Tilbakestillingslenken er utløpt, vennligst prøv igjen"
+ RESET_PASSWORD_RESET: "Passordet ble tilbakestilt"
+ RESET_INVALID_LINK: "Ugyldig tilbakestillingslenke, prøv igjen"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Instruksjonene for å tilbakestille passordet har blitt sendt via e-post til %s"
+ FORGOT_FAILED_TO_EMAIL: "Kunne ikke sende instruksjoner, prøv på nytt senere"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Kan ikke tilbakestille passord %s, ingen e-postadresse er oppgitt"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Brukeren med brukernavn %s eksisterer ikke"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Kan ikke tilbakestille passordet. Denne siden er ikke konfigurert til å sende e-post"
+ FORGOT_EMAIL_SUBJECT: "%s tilbakestillingsforespørsel for passord"
+ FORGOT_EMAIL_BODY: "
Tilbakestilling av passord
Kjære %1$s,
En forespørsel ble gjort på %4$s for å tilbakestille passordet.
Eventuelt, kopier over følgende URL til din nettlesers adresselinje:
%2$s
Vennligst hilsen,
%3$s
"
+ MANAGE_PAGES: "Administrer sider"
+ CONFIGURATION: "Konfigurasjon"
+ PAGES: "Sider"
+ PLUGINS: "Utvidelser"
+ PLUGIN: "Utvidelse"
+ THEMES: "Temaer"
+ LOGOUT: "Logg ut"
+ BACK: "Tilbake"
+ NEXT: "Neste"
+ PREVIOUS: "Forrige"
+ ADD_PAGE: "Legg til side"
+ ADD_MODULAR: "Legg til modulær"
+ MOVE: "Flytt"
+ DELETE: "Slett"
+ VIEW: "Visning"
+ SAVE: "Lagre"
+ NORMAL: "Normal"
+ EXPERT: "Ekspert"
+ EXPAND_ALL: "Utvid alle"
+ COLLAPSE_ALL: "Skjul alle"
+ ERROR: "Feil"
+ CLOSE: "Lukk"
+ CANCEL: "Avbryt"
+ CONTINUE: "Fortsett"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Bekreftelse påkrevd"
+ MODAL_CHANGED_DETECTED_TITLE: "Endringer oppdaget"
+ MODAL_CHANGED_DETECTED_DESC: "Du har ulagrede endringer. Er du sikker på at du vil forlate siden uten å lagre?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Bekreftelse påkrevd"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Er du sikker på at du vil slette denne filen? Denne handlingen kan ikke angres."
+ ADD_FILTERS: "Legg til filter"
+ SEARCH_PAGES: "Søk etter sider"
+ VERSION: "Versjon"
+ WAS_MADE_WITH: "Ble laget med"
+ BY: "Av"
+ UPDATE_THEME: "Oppdater tema"
+ UPDATE_PLUGIN: "Oppdater utvidelse"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "av dette temaet er nå tilgjengelig"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "av denne utvidelsen er nå tilgjengelig"
+ AUTHOR: "Forfatter"
+ HOMEPAGE: "Forside"
+ DEMO: "Demo"
+ BUG_TRACKER: "Bug tracker"
+ KEYWORDS: "Nøkkelord"
+ LICENSE: "Lisens"
+ DESCRIPTION: "Beskrivelse"
+ README: "Les meg"
+ REMOVE_THEME: "Fjern tema"
+ INSTALL_THEME: "Installer tema"
+ THEME: "Tema"
+ BACK_TO_THEMES: "Tilbake til temaer"
+ BACK_TO_PLUGINS: "Tilbake til plugins"
+ CHECK_FOR_UPDATES: "Se etter oppdateringer"
+ ADD: "Legg til"
+ CLEAR_CACHE: "Tøm cache"
+ CLEAR_CACHE_ALL_CACHE: "Alt mellomlager"
+ CLEAR_CACHE_ASSETS_ONLY: "Bare ressurser"
+ CLEAR_CACHE_IMAGES_ONLY: "Kun bilder"
+ CLEAR_CACHE_CACHE_ONLY: "Kun cache"
+ CLEAR_CACHE_TMP_ONLY: "Bare midlertidig"
+ DASHBOARD: "Dashbord"
+ UPDATES_AVAILABLE: "Oppdateringer tilgjengelig"
+ DAYS: "Dager"
+ UPDATE: "Oppdater"
+ BACKUP: "Sikkerhetskopi"
+ STATISTICS: "Statistikk"
+ TODAY: "I dag"
+ WEEK: "Uke"
+ MONTH: "Måned"
+ LATEST_PAGE_UPDATES: "Siste sideoppdateringer"
+ MAINTENANCE: "Vedlikehold"
+ UPDATED: "Oppdatert"
+ MON: "Man"
+ TUE: "Tir"
+ WED: "Ons"
+ THU: "Tor"
+ FRI: "Fre"
+ SAT: "Lør"
+ SUN: "Søn"
+ COPY: "Kopier"
+ EDIT: "Rediger"
+ CREATE: "Opprett"
+ GRAV_ADMIN: "Grav Admin"
+ GRAV_OFFICIAL_PLUGIN: "Grav offisiell plugin"
+ GRAV_OFFICIAL_THEME: "Grav offisielt tema"
+ PLUGIN_SYMBOLICALLY_LINKED: "Denne utvidelsen er symbolsk koblet. Oppdateringer vil ikke oppdages."
+ THEME_SYMBOLICALLY_LINKED: "Dette temaet er symbolsk koblet. Oppdateringer vil ikke oppdages"
+ REMOVE_PLUGIN: "Fjern plugin"
+ INSTALL_PLUGIN: "Installer plugin"
+ AVAILABLE: "Tilgjengelig"
+ INSTALLED: "Installert"
+ INSTALL: "Installer"
+ ACTIVE_THEME: "Aktivt tema"
+ SWITCHING_TO: "Bytter til"
+ SWITCHING_TO_DESCRIPTION: "Ved å bytte til et annet tema, er det ingen garanti for at alle layout-sidene støttes. Dette kan potensielt forårsake feil når du prøver å laste nevnte sider."
+ SWITCHING_TO_CONFIRMATION: "Vil du fortsette og bytte til temaet"
+ CREATE_NEW_USER: "Lag en ny bruker"
+ REMOVE_USER: "Fjern bruker"
+ ACCESS_DENIED: "Ingen tilgang"
+ ACCOUNT_NOT_ADMIN: "kontoen din har ikke administratorrettigheter"
+ PHP_INFO: "PHP Info"
+ INSTALLER: "Installatør"
+ AVAILABLE_THEMES: "Tilgjengelige temaer"
+ AVAILABLE_PLUGINS: "Tilgjengelige utvidelser"
+ INSTALLED_THEMES: "Installerte temaer"
+ INSTALLED_PLUGINS: "Installerte utvidelser"
+ BROWSE_ERROR_LOGS: "Bla igjennom feilmeldingsloggene"
+ SITE: "Nettsted"
+ INFO: "Info"
+ SYSTEM: "System"
+ USER: "Bruker"
+ ADD_ACCOUNT: "Ligg til konto"
+ SWITCH_LANGUAGE: "Bytt språk"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Utvidelsen ble aktivert"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Utvidelsen ble deaktivert"
+ SUCCESSFULLY_CHANGED_THEME: "Temaet ble endret"
+ INSTALLATION_FAILED: "Installasjonen mislyktes"
+ INSTALLATION_SUCCESSFUL: "Installasjonen var vellykket"
+ UNINSTALL_FAILED: "Avinstalleringen mislyktes"
+ UNINSTALL_SUCCESSFUL: "Avinstalleringen var vellykket"
+ SUCCESSFULLY_SAVED: "Lagret"
+ SUCCESSFULLY_COPIED: "Kopiert"
+ REORDERING_WAS_SUCCESSFUL: "Omorganiseringen var vellykket"
+ SUCCESSFULLY_DELETED: "Slettet"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Språket ble endret"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Du har ikke rettigheter til å gjøre dette"
+ CACHE_CLEARED: "Mellomlageret ble tømt"
+ METHOD: "Metode"
+ ERROR_CLEARING_CACHE: "Tømming av mellomlageret mislyktes"
+ AN_ERROR_OCCURRED: "En feil oppstod"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Sikkerhetskopien kan nå lastes ned"
+ DOWNLOAD_BACKUP: "Last ned sikkerhetskopi"
+ PAGES_FILTERED: "Filtrerte sider"
+ NO_PAGE_FOUND: "Ingen side ble funnet"
+ INVALID_PARAMETERS: "Ugyldige parametere"
+ NO_FILES_SENT: "Inge fil ble sendt"
+ EXCEEDED_FILESIZE_LIMIT: "Overgikk PHP-konfigurasjonens filstørrelsesbegrensning"
+ UNKNOWN_ERRORS: "Ukjente feil"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Overgikk Grav-konfigurasjonens filstørrelsesbegrensning"
+ UNSUPPORTED_FILE_TYPE: "Filtypen støttes ikke"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Kunne ikke flytte den opplastede filen."
+ FILE_UPLOADED_SUCCESSFULLY: "Filen ble vellykket opplastet"
+ FILE_DELETED: "Fil slettet"
+ FILE_COULD_NOT_BE_DELETED: "Filen kunne ikke slettes"
+ FILE_NOT_FOUND: "Fant ikke filen"
+ NO_FILE_FOUND: "Ingen filer funnet"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav ble oppdatert til"
+ GRAV_UPDATE_FAILED: "Grav-oppdatering mislyktes"
+ EVERYTHING_UPDATED: "Alt oppdatert"
+ UPDATES_FAILED: "Oppdateringer mislyktes"
+ AVATAR_BY: "Avatar av"
+ AVATAR_UPLOAD_OWN: "Eller last opp din egen..."
+ LAST_BACKUP: "Siste sikkerhetskopiering"
+ FULL_NAME: "Fullt navn"
+ USERNAME: "Brukernavn"
+ EMAIL: "E-post"
+ USERNAME_EMAIL: "Brukernavn eller E-post"
+ PASSWORD: "Passord"
+ PASSWORD_CONFIRM: "Bekreft passord"
+ TITLE: "Tittel"
+ LANGUAGE: "Språk"
+ ACCOUNT: "Konto"
+ EMAIL_VALIDATION_MESSAGE: "Må være en gyldig e-postadresse"
+ PASSWORD_VALIDATION_MESSAGE: "Passordet må inneholde minst ett tall og en stor og liten bokstav, samt inneholde minst 8 tegn"
+ LANGUAGE_HELP: "Angi favoritt språk"
+ MEDIA: "Media"
+ DEFAULTS: "Standard"
+ SITE_TITLE: "Nettstedets tittel"
+ SITE_TITLE_PLACEHOLDER: "Tittel for hele nettstedet"
+ SITE_TITLE_HELP: "Standardtittelen for nettsiden, brukes ofte i temaer"
+ SITE_DEFAULT_LANG: "Standardspråk"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Standardspråk som skal brukes av temaets -kode"
+ SITE_DEFAULT_LANG_HELP: "Standardspråk som skal brukes av temaets -kode"
+ DEFAULT_AUTHOR: "Forhåndsvalgt forfatter"
+ DEFAULT_AUTHOR_HELP: "En forhåndsvalgt forfatters navn, som ofte brukes i temaer eller sideinnhold"
+ DEFAULT_EMAIL: "Forhåndsvalgt e-post"
+ DEFAULT_EMAIL_HELP: "En forhåndsvalgt e-post, som referanse i temaer eller sider"
+ TAXONOMY_TYPES: "Taksonomityper"
+ TAXONOMY_TYPES_HELP: "Taksonomityper defineres her hvis du ønsker å bruke dem i sider"
+ PAGE_SUMMARY: "Sidesammendrag"
+ ENABLED: "Aktivert"
+ ENABLED_HELP: "Aktiver sidesammendrag (sammendraget gir det samme innholdet som på siden)"
+ 'YES': "Ja"
+ 'NO': "Nei"
+ SUMMARY_SIZE: "Sammendragslengde"
+ SUMMARY_SIZE_HELP: "Antall tegn fra en side som skal brukes i et sidesammendrag"
+ FORMAT: "Fomat"
+ FORMAT_HELP: "kort = bruk først forekomsten av skilletegn eller lengde; lang = skilletegn ignoreres"
+ SHORT: "Kort"
+ LONG: "Lang"
+ DELIMITER: "Skilletegn"
+ DELIMITER_HELP: "Skilletegn for sammendrag (standard er '===')"
+ METADATA: "Metadata"
+ METADATA_HELP: "Standard metadataverdier som vises på hver side med mindre de overstyres av siden"
+ NAME: "Navn"
+ CONTENT: "Innhold"
+ REDIRECTS_AND_ROUTES: "Viderekoblinger & Ruter"
+ CUSTOM_REDIRECTS: "Egendefinerte viderekoblinger"
+ CUSTOM_REDIRECTS_HELP: "ruter som omadresserer til andre sider. Standard Regex-erstatning er gyldig"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/ditt/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/din/omadressering"
+ CUSTOM_ROUTES: "Egendefinerte ruter"
+ CUSTOM_ROUTES_HELP: "ruter som er alias for andre sider. Standard Regex-erstatning er gyldig"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/ditt/alias/"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/din/rute"
+ FILE_STREAMS: "Filstrømmer"
+ DEFAULT: "Standard"
+ PAGE_MEDIA: "Side-Media"
+ OPTIONS: "Innstillinger"
+ PUBLISHED: "Publisert"
+ PUBLISHED_HELP: "Som standard publiseres siden, med mindre du eksplisitt angir published: false eller gjennom publish_date angir en dato i fremtiden, eller gjennom unpublish_date angir en dato i fortiden"
+ DATE: "Dato"
+ DATE_HELP: "Dato-variabelen lar deg spesifisere en dato knyttet til denne siden."
+ PUBLISHED_DATE: "Publisert Dato"
+ PUBLISHED_DATE_HELP: "Kan gi en dato for å automatisk aktivere publisering."
+ UNPUBLISHED_DATE: "Avpublisert Dato"
+ UNPUBLISHED_DATE_HELP: "Kan gi en dato for å automatisk aktivere avpublisering."
+ ROBOTS: "Roboter"
+ TAXONOMIES: "Taksonomier"
+ TAXONOMY: "Taksonomi"
+ ADVANCED: "Avansert"
+ SETTINGS: "Innstillinger"
+ FOLDER_NUMERIC_PREFIX: "Mappens Numeriske Prefiks"
+ FOLDER_NUMERIC_PREFIX_HELP: "Numerisk prefiks som angir manuell rangering og impliserer synlighet"
+ FOLDER_NAME: "Mappenavn"
+ FOLDER_NAME_HELP: "Mappenavnet som lagres i filsystemet for denne siden"
+ PARENT: "Forelder"
+ DEFAULT_OPTION_ROOT: "- Rot -"
+ DEFAULT_OPTION_SELECT: "- Valg -"
+ DISPLAY_TEMPLATE: "Vis mal"
+ DISPLAY_TEMPLATE_HELP: "Sidetype bestemmer hvilken twig mal som skal tegne ut siden"
+ BODY_CLASSES: "Body klasser"
+ ORDERING: "Sortering"
+ PAGE_ORDER: "Siderekkefølge"
+ OVERRIDES: "Overstyrer"
+ MENU: "Meny"
+ MENU_HELP: "Teksten som brukes i en meny. Hvis den ikke finnes, blir tittel brukt."
+ SLUG: "Kortversjon"
+ SLUG_HELP: "Kortversjonen brukes til sidens del av url-en"
+ SLUG_VALIDATE_MESSAGE: "Kortversjonen kan kun inneholde `små` bokstaver og bindestrek"
+ PROCESS: "Prosess"
+ PROCESS_HELP: "Kontroller hvordan sidene blir prosessert. Kan settes til pr side i stedet for globalt."
+ DEFAULT_CHILD_TYPE: "Standard type `barn`"
+ USE_GLOBAL: "Bruk globalt"
+ ROUTABLE: "Kan rutes til"
+ ROUTABLE_HELP: "Om denne siden skal være tilgjengelig via en url"
+ CACHING: "Hurtigbuffer"
+ VISIBLE: "Synlig"
+ VISIBLE_HELP: "Bestemmer om siden er synlig ved navigering."
+ DISABLED: "Deaktivert"
+ ITEMS: "Elementer"
+ ORDER_BY: "Sorter etter"
+ ORDER: "Sortering"
+ FOLDER: "Folder"
+ ASCENDING: "Stigende"
+ DESCENDING: "Synkende"
+ ADD_MODULAR_CONTENT: "Legg til modulært innhold"
+ PAGE_TITLE: "Sidetittel"
+ PAGE_TITLE_HELP: "Tittelen på siden"
+ PAGE: "Side"
+ MODULAR_TEMPLATE: "Modulær mal"
+ FRONTMATTER: "Ingress"
+ FILENAME: "Filnavn"
+ PARENT_PAGE: "`Foreldre`-side"
+ HOME_PAGE: "Hjemmeside"
+ HOME_PAGE_HELP: "Siden som Grav vil bruke som standard startside"
+ DEFAULT_THEME: "Standardtema"
+ DEFAULT_THEME_HELP: "Sett standardtema for Grav (standard er Antimatter)"
+ TIMEZONE: "Tidssone"
+ TIMEZONE_HELP: "Overstyrer standard tidssone på server"
+ SHORT_DATE_FORMAT: "Kort visningsformat for dato"
+ SHORT_DATE_FORMAT_HELP: "Sett kort visningsformat for dato som temaene kan bruke"
+ LONG_DATE_FORMAT: "Langt visningsformat for dato"
+ LONG_DATE_FORMAT_HELP: "Sett langt visningsformat for dato som temaene kan bruke"
+ DEFAULT_ORDERING: "Standardsortering"
+ DEFAULT_ORDERING_HELP: "Sider i en liste vil bli rendret i denne rekkefølgen med mindre den blir overskrevet"
+ DEFAULT_ORDERING_DEFAULT: "Standard - basert på foldernavn"
+ DEFAULT_ORDERING_FOLDER: "Folder - basert på foldernavn uten prefix"
+ DEFAULT_ORDERING_TITLE: "Tittel - basert på tittelfeltet i header"
+ DEFAULT_ORDERING_DATE: "Dato - basert på dato-feltet i topptekst"
+ DEFAULT_ORDER_DIRECTION: "Standard sorteringsmetode"
+ DEFAULT_ORDER_DIRECTION_HELP: "Retningen på sider i en liste"
+ DEFAULT_PAGE_COUNT: "Standard sidetelling"
+ DEFAULT_PAGE_COUNT_HELP: "Standard maksimalt antall sider i en liste"
+ DATE_BASED_PUBLISHING: "Dato-basert publisering"
+ DATE_BASED_PUBLISHING_HELP: "Automatisk (av)publisere innlegg basert på dato"
+ EVENTS: "Hendelser"
+ EVENTS_HELP: "Aktivere eller Deaktivere bestemte hendelser. Deaktivering kan ødelegge utvidelser"
+ REDIRECT_DEFAULT_ROUTE: "Omdirigere standardrute"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Automatisk omdirigere til en sides standardrute"
+ LANGUAGES: "Språk"
+ SUPPORTED: "Støttet"
+ SUPPORTED_HELP: "Kommadelt liste for tobokstavers språkkoder (for eksempel 'en,fr,de')"
+ TRANSLATIONS_ENABLED: "Oversettelser aktivert"
+ TRANSLATIONS_ENABLED_HELP: "Støtter oversettelser i Grav, plugins og extensions"
+ TRANSLATIONS_FALLBACK: "Oversettelsers reserveløsning"
+ TRANSLATIONS_FALLBACK_HELP: "Anvend reserveløsninger hvis aktivt språk ikke finnes"
+ ACTIVE_LANGUAGE_IN_SESSION: "Aktivt språk i økten"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Lagre aktivt språk i økten"
+ HTTP_HEADERS: "HTTP-topptekst"
+ EXPIRES: "Utløper"
+ EXPIRES_HELP: "Angir utløpt-topptekst. Verdien er i sekunder."
+ CACHE_CONTROL: "HTTP Cache-kontroll"
+ CACHE_CONTROL_HELP: "Angi en gyldig bufferstyrings verdi som \"ingen-cache, ingen-lagring, må re-validere\""
+ LAST_MODIFIED: "Sist endret"
+ LAST_MODIFIED_HELP: "Angir sist-endret-topptekst som kan bidra til å optimalisere mellomtjener og nettleser-hurtiglager"
+ ETAG: "ETag"
+ ETAG_HELP: "Angir etag-topptekst for å identifisere når en side er endret"
+ VARY_ACCEPT_ENCODING: "Godta variert koding"
+ VARY_ACCEPT_ENCODING_HELP: "Angir `Vary: Accept Encoding`-topptekst til støtte for mellomtjener og CDN-hurtiglager"
+ MARKDOWN_EXTRA: "Markdown ekstra"
+ MARKDOWN_EXTRA_HELP: "Aktivere standardstøtte for Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ AUTO_LINE_BREAKS: "Automatisk linjeskift"
+ AUTO_LINE_BREAKS_HELP: "Aktivere støtte for automatisk linjeskift i markdown"
+ AUTO_URL_LINKS: "Automatiske URL-lenker"
+ AUTO_URL_LINKS_HELP: "Aktiver automatisk konvertering av lenker til HTML-hyperlenker"
+ ESCAPE_MARKUP: "Verne kode"
+ ESCAPE_MARKUP_HELP: "Verne kode i HTML-enheter"
+ CACHING_HELP: "Global på/av-bryteren for å aktivere/deaktivere Grav hurtigbufring"
+ CACHE_CHECK_METHOD: "Cache kontrollmetode"
+ CACHE_CHECK_METHOD_HELP: "Velg metoden som Grav bruker for å kontrollere om sidefiler har blitt endret."
+ CACHE_DRIVER: "Cache driver"
+ CACHE_DRIVER_HELP: "Velg hvilken cache driver Grav skal bruke. 'Auto Detect' forsøker å finne den beste for deg"
+ CACHE_PREFIX: "Cache prefix"
+ CACHE_PREFIX_HELP: "En identifikator for deler av Grav key. Ikke bytt med mindre du vet hva du gjør."
+ CACHE_PREFIX_PLACEHOLDER: "Utledet fra base-url (overstyr ved å legge inn en tilfeldig streng)"
+ LIFETIME: "Levetid"
+ LIFETIME_HELP: "Setter cache levetid i sekunder. 0 = evig"
+ GZIP_COMPRESSION: "Gzip-kompresjon"
+ GZIP_COMPRESSION_HELP: "Aktiver gzip-kompresjon av Grav-siden for økt ytelse."
+ TWIG_TEMPLATING: "Twig-maler"
+ TWIG_CACHING: "Twig-caching"
+ TWIG_CACHING_HELP: "Kontroller Twigs cache-mekanisme. La denne være aktivert for best ytelse."
+ TWIG_DEBUG: "Twig feilsøking"
+ TWIG_DEBUG_HELP: "Tillater å velge bort Twigs feilsøkings-utvidelse."
+ DETECT_CHANGES: "Oppdag endringer"
+ DETECT_CHANGES_HELP: "Twig vil automatisk rekompilere bufferen hvis den oppdager forandringer i Twig-malene."
+ AUTOESCAPE_VARIABLES: "Auto-escape variabler"
+ AUTOESCAPE_VARIABLES_HELP: "Auto-escaper alle variabler. Dette kommer trolig til å bryte websidene dine."
+ ASSETS: "Ressurser"
+ CSS_PIPELINE: "Css pipeline"
+ CSS_PIPELINE_HELP: "Css-pipeline slår sammen flere css-ressurser til en fil."
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Inkluder eksterne ressurser i css-pipeline."
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Eksterne URLer har relative filreferanser og bør ikke brukes i pipelinen."
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Prosesser css-pipeline først."
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Prosesser css-pipeline før andre css-referanser som ikke er inkludert."
+ CSS_MINIFY: "Css-minifisering"
+ CSS_MINIFY_HELP: "Minifiser css når pipeline kjøres."
+ CSS_MINIFY_WINDOWS_OVERRIDE: "Css minifiser Windows-overstyring."
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Minifiser overstyring for Windows OS. Er `false` som standard p.g.a. ThreadStackSize."
+ CSS_REWRITE: "Css-overskriving"
+ CSS_REWRITE_HELP: "Overskriv alle relative url-er i css når pipeline kjøres."
+ JAVASCRIPT_PIPELINE: "Javascript pipeline"
+ JAVASCRIPT_PIPELINE_HELP: "Js-pipeline er sammenslåing av flere js-ressurser til en fil."
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Inkluder eksterne ressurser i js-pipeline."
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Eksterne url-er har av og til relative fil-referanser og bør ikke inn i pipelinen."
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Prosesser js-pipeline først."
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Prosesser js-pipeline før andre js-referanser som ikke er inkludert."
+ JAVASCRIPT_MINIFY: "Javascript minifisering"
+ JAVASCRIPT_MINIFY_HELP: "Aktiver tidsstempel på ressurser."
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Aktiver timestamp på ressurser."
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Aktiver timestamp på ressurser."
+ COLLECTIONS: "Samlinger"
+ ERROR_HANDLER: "Feilhåndtering"
+ DISPLAY_ERRORS: "Visning av feil"
+ DISPLAY_ERRORS_HELP: "Vis full backtrace-style feilside."
+ LOG_ERRORS: "Logge feil"
+ LOG_ERRORS_HELP: "Logg feil til /logs-folder"
+ DEBUGGER: "Feilsøking"
+ DEBUGGER_HELP: "Aktiver Grav feilsøker og følgende innstillinger"
+ DEBUG_TWIG: "Feilsøk Twig"
+ DEBUG_TWIG_HELP: "Aktiver feilsøking av Twig-maler"
+ SHUTDOWN_CLOSE_CONNECTION: "Steng av lukk connection"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Lukk connection før onShutdown() kalles. `false` for feilsøking"
+ DEFAULT_IMAGE_QUALITY: "Standard bilde-kvalitet"
+ DEFAULT_IMAGE_QUALITY_HELP: "Standard bilde-kvalitet som brukes ved resampling eller caching av bilder (85%)"
+ CACHE_ALL: "Cache alle bilder"
+ CACHE_ALL_HELP: "Kjør alle bilder gjennom Gravs cache-system selv om de ikke har noen media-manipulasjoner"
+ IMAGES_DEBUG: "Visning av info ved bildebehandling"
+ IMAGES_DEBUG_HELP: "Legg et lag over bildet som viser pixel-dybden når man arbeider med retina f.eks."
+ UPLOAD_LIMIT: "Filopplastingsgrense"
+ UPLOAD_LIMIT_HELP: "Sett maksimum opplastingsstørrelse i bytes (0 is ubegrenset)"
+ ENABLE_MEDIA_TIMESTAMP: "Aktiver tidsstempel på media"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Legger til et tidsstempel basert på sist endret-dato på hvert media-ressurs"
+ SESSION: "Sesjon"
+ SESSION_ENABLED_HELP: "Aktiver sesjonsstøtte i Grav"
+ TIMEOUT: "Tidsutløp"
+ TIMEOUT_HELP: "Setter sesjonens tidsutløp i sekunder"
+ SESSION_NAME_HELP: "En identifikator som brukes til å lage navnet på sesjons-cookien"
+ ABSOLUTE_URLS: "Absolutte url-er"
+ ABSOLUTE_URLS_HELP: "Absolutte eller relative url-er for `base_url`"
+ PARAMETER_SEPARATOR: "Parameter-separator"
+ PARAMETER_SEPARATOR_HELP: "Separator for innsendte parametre som kan endres for Apache på Windows"
+ TASK_COMPLETED: "Oppgave fullført"
+ EVERYTHING_UP_TO_DATE: "Alt er oppdatert"
+ UPDATES_ARE_AVAILABLE: "oppdatering(er) er tilgjengelige"
+ IS_AVAILABLE_FOR_UPDATE: "er klar for oppdatering"
+ IS_NOW_AVAILABLE: "er nå tilgjengelig"
+ CURRENT: "Nåværende"
+ UPDATE_GRAV_NOW: "Oppdater Grav nå"
+ GRAV_SYMBOLICALLY_LINKED: "Grav er lenket med `symbolske` lenker. Oppgradering vil ikke være tilgjengelig"
+ UPDATING_PLEASE_WAIT: "Oppdaterer... vennligst vent, laster ned"
+ OF_THIS: "av dette"
+ OF_YOUR: "av din"
+ HAVE_AN_UPDATE_AVAILABLE: "har en oppdatering tilgjengelig"
+ SAVE_AS: "Lagre som"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Er du sikker på at du vil slette denne siden og alle dens barn? Hvis siden er oversatt til andre språk, vil oversettingene beholdes og må slettes separat. Ellers vil sidefolderen bli slettet sammen med dens undersider. Denne handlingen kan ikke gjøres om."
+ AND: "og"
+ UPDATE_AVAILABLE: "Oppdatering tilgjengelig"
+ METADATA_KEY: "Nøkkel (f.eks. 'Nøkkelord')"
+ METADATA_VALUE: "Verdi (f.eks. 'Blogg, Grav')"
+ USERNAME_HELP: "Brukernavn må være mellom 3 og 16 tegn, inkludert `små` bokstaver, tall, understrekning og bindestrek. `Store` bokstaver, mellomrom, og spesialtegn er ikke tillatt"
+ FULLY_UPDATED: "Fullt oppdatert"
+ SAVE_LOCATION: "Lagre sted"
+ PAGE_FILE: "Sidemal"
+ PAGE_FILE_HELP: "Navnet på sidemalen, og standard visningsmal for denne siden"
+ NO_USER_ACCOUNTS: "Ingen brukerkonto funnet, vennligst opprett en først..."
+ REDIRECT_TRAILING_SLASH: "Viderekoble avsluttende skråstrek"
+ REDIRECT_TRAILING_SLASH_HELP: "Gjør en 301 viderekobling heller enn å håndtere url-er med avsluttende skråstreker usynlig."
+ DEFAULT_DATE_FORMAT: "Datoformat for siden"
+ DEFAULT_DATE_FORMAT_HELP: "Datoformat for siden brukt av Grav. Som standard, forsøker Grav å gjette ditt datoformat, men du kan spesifisere et format med PHPs dato-syntaks (f.eks.: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Gjett automatisk"
+ IGNORE_FILES: "Ignorer filer"
+ IGNORE_FILES_HELP: "Spesifikke filer som skal ignoreres når sidene prosesseres."
+ IGNORE_FOLDERS: "Ignorer foldere"
+ IGNORE_FOLDERS_HELP: "Spesifikke foldere som skal ignoreres når sidene prosesseres."
+ HTTP_ACCEPT_LANGUAGE: "Sett språk fra nettleser"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Du kan forsøke å sette språket basert på `http_accept_language` header-tagg i nettleseren."
+ OVERRIDE_LOCALE: "Overstyr språkvalg"
+ OVERRIDE_LOCALE_HELP: "Overstyr apråk-innstillingene i PHP basert på eksisterende språk."
+ REDIRECT: "Viderekobling av siden"
+ REDIRECT_HELP: "Legg inn en siderute eller ekstern url som denne siden skal viderekobles til. F.eks. `/hva/som/helst` or `http:/hvasomhelst.no`."
+ PLUGIN_STATUS: "Status på utvidelser"
+ INCLUDE_DEFAULT_LANG: "Inkluder standard-språk"
+ INCLUDE_DEFAULT_LANG_HELP: "Dette vil sette kode for standardspråk foran alle url-er i dette språket. F.eks. engelsk `/en/blog/my-post`."
+ ALLOW_URL_TAXONOMY_FILTERS: "Url taksonomi-filter"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Du kan filtrere side-baserte samlinger via `/taxonomy:value`."
+ REDIRECT_DEFAULT_CODE: "Standard viderekoblingskode"
+ REDIRECT_DEFAULT_CODE_HELP: "Http-statuskode som skal brukes til viderekobling."
+ IGNORE_HIDDEN: "Ignorer skjulte filer"
+ IGNORE_HIDDEN_HELP: "Ignorer alle filer og foldere som starter med et punktum."
+ WRAPPED_SITE: "Inkludert nettsted"
+ WRAPPED_SITE_HELP: "For at tema/utvidelser skal vite om Grav er inkludert i en annen løsning."
+ FALLBACK_TYPES: "Tillatte fallback-typer"
+ FALLBACK_TYPES_HELP: "Tillatte filtyper som kan bli funnet hvis de blir aksessert via en side-rute. Standard er alle støttede mediatyper."
+ INLINE_TYPES: "Fallback-typer i nettleser"
+ INLINE_TYPES_HELP: "En liste over fil-typer som skal bli vist i nettleseren i stedet for å bli lastet ned."
+ APPEND_URL_EXT: "Legg til url-utvidelser"
+ APPEND_URL_EXT_HELP: "Legger til en egendefinert utvidelse til sidens url. Dette betyr at Grav vil lette etter malen: `..twig`."
+ PAGE_MODES: "Sidemoduser"
+ PAGE_TYPES: "Sidetyper"
+ ACCESS_LEVELS: "Tilgangsnivåer"
+ GROUPS: "Grupper"
+ GROUPS_HELP: "Liste av grupepr som brukeren tilhører."
+ ADMIN_ACCESS: "Admin-tilgang"
+ SITE_ACCESS: "Nettsted-tilgang"
+ INVALID_SECURITY_TOKEN: "Ugyldig sikkerhetssymbol"
+ ACTIVATE: "Aktiver"
+ TWIG_UMASK_FIX: "Umask fiks"
+ TWIG_UMASK_FIX_HELP: "Som standard oppretter Twig-cachede filer som 0755, fiks bytter dette til 0775."
+ CACHE_PERMS: "Cache-rettigheter"
+ CACHE_PERMS_HELP: "Standard folder-rettigheter for cache. Normalt 0755 eller 0775 avhengig av oppsett."
+ REMOVE_SUCCESSFUL: "Fjerning var vellykket"
+ REMOVE_FAILED: "Fjerning feilet"
+ HIDE_HOME_IN_URLS: "Skjul hjem-rute i url-er"
+ HIDE_HOME_IN_URLS_HELP: "Sikrer at standard rute for alle sider under hjemsiden ikke refererer til hjemsidens vanlige rute."
+ TWIG_FIRST: "Prosesser Twig først"
+ TWIG_FIRST_HELP: "Hvis du aktiverte Twig sideprosessering, da kan du konfigurere Twig til å prosessere før eller etter markdown"
+ SESSION_SECURE: "Sikker sesjon"
+ SESSION_SECURE_HELP: "Hvis aktivert, så indikerer dette at kommunikasjonen for denne cookien må være via en kryptert overføring. ADVARSEL: Aktiver denne bare på nettsteder som kjøres utelukkende på https"
+ SESSION_HTTPONLY: "Kun http"
+ SESSION_HTTPONLY_HELP: "Hvis aktivert, så indikerer denne at cookier bare skal bli brukt over http, og javascript-endringer er ikke tillatt"
+ REVERSE_PROXY: "Revers-proxy"
+ REVERSE_PROXY_HELP: "Aktiver denne om du er bak en revers-proxy og du har problemer med url-er som inneholder ulovlige porter"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Ugyldig startfelt på siden, kunne ikke lagre"
+ ADD_FOLDER: "Legg til folder"
+ PROXY_URL: "Proxy url"
+ PROXY_URL_HELP: "Legg inn proxy-tjener eller ip og port"
+ NOTHING_TO_SAVE: "Ingenting å lagre"
+ FILE_ERROR_ADD: "Det oppstod en feil når filen skulle legges til"
+ FILE_ERROR_UPLOAD: "Det oppstod en feil ved opplasting av fil"
+ FILE_UNSUPPORTED: "Filtypen er ikke støttet"
+ ADD_ITEM: "Legg til"
+ FILE_TOO_LARGE: "Filen er for stor til å bli lastet opp, maksimum tillatte størrelse er %s i følge dine php-innstillinger. øk `post_max_size` php-innstilling"
+ INSTALLING: "Installerer"
+ LOADING: "Laster..."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Følgende avhengighet må fullføres først:"
+ ERROR_INSTALLING_PACKAGES: "Det oppstod en feil ved installering av pakken(e)"
+ INSTALLING_DEPENDENCIES: "Installerer avhengigheter..."
+ INSTALLING_PACKAGES: "Installerer pakke(r)..."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Installering av pakke(r) var vellykket."
+ READY_TO_INSTALL_PACKAGES: "Klar til å installere pakken(e)"
+ PACKAGES_NOT_INSTALLED: "Pakkene er ikke installert"
+ PACKAGES_NEED_UPDATE: "Pakkene er allerede installert, men de er for gamle"
+ PACKAGES_SUGGESTED_UPDATE: "Pakkene er allerede installert, og versjonen er ok, men vil bli oppdatert for å holde løsningen oppdatert"
+ REMOVE_THE: "Fjern %s"
+ CONFIRM_REMOVAL: "Er du sikker på at du vil slette %s?"
+ REMOVED_SUCCESSFULLY: "Fjerningen av %s var vellykket"
+ ERROR_REMOVING_THE: "Fjerningen av %s var mislykket"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s krevde følgende avhengigheter som ikke er påkrevd av andre installerte pakker. Hvis du ikke bruker dem, kan du fjerne dem direkte herfra."
+ READY_TO_UPDATE_PACKAGES: "Klar til å oppdatere pakken(e)"
+ ERROR_UPDATING_PACKAGES: "Det oppstod en feil ved oppdatering av pakken(e)"
+ UPDATING_PACKAGES: "Oppdaterer pakke(r)..."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Oppdatering av pakken(e) var vellykket."
+ UPDATING: "Oppdaterer"
+ GPM_RELEASES: "GPM utgivelser"
+ GPM_RELEASES_HELP: "Velg 'Testing' for å installere beta- eller testversjoner"
+ GPM_METHOD: "Metode for fjernhenting"
+ GPM_METHOD_HELP: "Når denne er satt til auto, vil Grav sjekke om fopen er tilgjengelig og bruke den, ellers falle tilbake til curl. For å tvinge den eller andre, endre innstilling."
+ GPM_VERIFY_PEER: "Godkjenning (SSL)"
+ GPM_VERIFY_PEER_HELP: "Noen tilbydere feiler med å verifisere getgrav.orgs SSL-sertifikat, noe som gjør at GPM ikke virker. Hvis dette gjelder for deg, kan det hjelpe å slå av denne innstillingen"
+ AUTO: "Auto"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabil"
+ TESTING: "Testing"
+ FRONTMATTER_PROCESS_TWIG: "Prosesser startfelt Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Når denne er aktivert, kan du bruke Twig konfigurasjonsvariabler på sidens startfelter."
+ FRONTMATTER_IGNORE_FIELDS: "Ignorer startfelter"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Visse startfelter kan inneholde Twig men bør ikke bli prosessert, som f.eks. 'forms'."
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Installasjon av pakken %s var vellykket."
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Rekkefølge for `parent`-innstillinger, sortering inaktivert."
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Siden er ikke synlig, sortering inaktivert."
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Sortering via admin er ikke støttet fordi det er mer enn 200 elementer på samme nivå."
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Side-sortering er inaktivert for denne siden fordi Numerisk folder-prefix er ikke aktivert."
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "MERK: Du kan ikke legge til media-filer før du lagrer siden. Bare klikk 'Lagre' på toppen."
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "MERK: Siden må lagres før du kan laste opp filer til den."
+ DROP_FILES_HERE_TO_UPLOAD: "Slipp filene dine her eller klikk i dette området."
+ INSERT: "Legg inn"
+ UNDO: "Gjør om"
+ REDO: "Tilbakestill `Gjør om`"
+ HEADERS: "Overskrifter"
+ BOLD: "Halvfet"
+ ITALIC: "Kursiv"
+ STRIKETHROUGH: "Gjennomstrek"
+ SUMMARY_DELIMITER: "Summerings-skilletegn"
+ LINK: "Lenke"
+ IMAGE: "Bilde"
+ BLOCKQUOTE: "Blokksitat"
+ UNORDERED_LIST: "Punktliste"
+ ORDERED_LIST: "Nummerert liste"
+ EDITOR: "Editor"
+ PREVIEW: "Forhåndsvisning"
+ FULLSCREEN: "Fullskjerm"
+ MODULAR: "Modulær"
+ NON_ROUTABLE: "Ikke rutbar"
+ NON_MODULAR: "Ikke modulær"
+ NON_VISIBLE: "Ikke synlig"
+ NON_PUBLISHED: "Upublisert"
+ CHARACTERS: "tegn"
+ PUBLISHING: "Publisering"
+ NOTIFICATIONS: "Meldinger"
+ MEDIA_TYPES: "Mediatyper"
+ IMAGE_OPTIONS: "Bilde-tilvalg"
+ MIME_TYPE: "Mimetype"
+ THUMB: "Miniatyr"
+ TYPE: "Type"
+ FILE_EXTENSION: "Fil-endinger"
+ LEGEND: "Sideoverskrift"
+ MEMCACHE_SERVER: "Memcache-tjener"
+ MEMCACHE_SERVER_HELP: "Memcache tjeneradresse"
+ MEMCACHE_PORT: "Memcache port"
+ MEMCACHE_PORT_HELP: "Memcache tjener-port"
+ MEMCACHED_SERVER: "Memcached tjener"
+ MEMCACHED_SERVER_HELP: "Memcached tjeneradresse"
+ MEMCACHED_PORT: "Memcached port"
+ MEMCACHED_PORT_HELP: "Memcache tjener-port"
+ REDIS_SERVER: "Redis tjener"
+ REDIS_SERVER_HELP: "Redis tjeneradresse"
+ REDIS_PORT: "Redis port"
+ REDIS_PORT_HELP: "Redis tjener-port"
+ ALL: "Alle"
+ FROM: "fra"
+ TO: "til"
+ RELEASE_DATE: "Utgivelsesdato"
+ SORT_BY: "Sorter etter"
+ RESOURCE_FILTER: "Filter..."
+ FORCE_SSL: "Tving ssl"
+ FORCE_SSL_HELP: "Tving ssl globalt. Hvis denne er aktivert når nettstedet nås via http, Grav viderekobler til https-siden"
+ NEWS_FEED: "Nyhetsvarsling"
+ EXTERNAL_URL: "Ekstern url"
+ SESSION_PATH: "Sesjons-sti"
+ SESSION_PATH_HELP: "Brukes kun hvis du har valgt en egendefinert base-url (du overskriver nettstedets / underfolder)"
+ CUSTOM_BASE_URL: "Egendefinert base-url"
+ CUSTOM_BASE_URL_HELP: "Bruk hvis du ønsker å overskrive nettstedets domene eller å bruke en annen underfolder enn den som brukes av Grav. F. eks: http://localhost."
+ FILEUPLOAD_PREVENT_SELF: 'Kan ikke bruke "%s" utenfor sider.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Kan ikke laste opp fil %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Kan ikke flytte fil %s til "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Avbryt opplasting'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Er du sikker på at du vil avbryte denne opplastingen?'
+ DROPZONE_DEFAULT_MESSAGE: 'Slipp filene dine her eller klikk i dette området'
+ DROPZONE_FALLBACK_MESSAGE: 'Nettleseren din støtter ikke dra-og-slipp filopplasting.'
+ DROPZONE_FALLBACK_TEXT: 'Vennligst bruk skjemaet under for å laste opp filene dine.'
+ DROPZONE_FILE_TOO_BIG: 'Filen er for stor ({{filesize}}MiB). Maks filstørrelse: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Du kan ikke laste opp filer av denne typen."
+ DROPZONE_MAX_FILES_EXCEEDED: "Du kan ikke laste opp flere filer."
+ DROPZONE_REMOVE_FILE: "Fjern fil"
+ DROPZONE_RESPONSE_ERROR: "Tjeneren responderte med {{statusCode}}-kode."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Aktiver Admin-caching"
+ ADMIN_CACHING_HELP: "Caching i admin kan bli kontrollert uavhengig av frontend-nettstedet."
+ DESTINATION_NOT_SPECIFIED: "Målet er ikke spesifisert"
+ UPLOAD_ERR_NO_TMP_DIR: "Mangler en midlertidig folder"
+ SESSION_SPLIT: "Sesjons-splitt"
+ SESSION_SPLIT_HELP: "Uavhengig splitt-sesjoner mellom nettsted og andre utvidelser (som f. eks. admin)"
+ ERROR_FULL_BACKTRACE: "Fullt sporbar feil"
+ ERROR_SIMPLE: "Enkel feil"
+ ERROR_SYSTEM: "Systemfeil"
+ IMAGES_AUTO_FIX_ORIENTATION: "Korriger orientering automatisk"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Automatisk korriger bildeorientering basert på Exif data."
+ REDIS_SOCKET: "Redis socket"
+ REDIS_SOCKET_HELP: "Redis socket"
+ NOT_SET: "Ikke satt"
+ PERMISSIONS: "Tillatelser"
+ NEVER_CACHE_TWIG: "Aldri cache for Twig"
+ NEVER_CACHE_TWIG_HELP: "Kun cache for innhold og prosesser Twig hver gang for sider. Ignorerer twig_først-innstilling."
+ ALLOW_WEBSERVER_GZIP: "Tillat WebServer gzip"
+ ALLOW_WEBSERVER_GZIP_HELP: "Av som standard. Når aktivert vil webserver-konfigurert gzip/deflate-kompresjon virke, men http-forbindelse vil ikke bli lukket før onShutDown() event, noe som forårsaker tregere sidelasting."
+ OFFLINE_WARNING: "Forbindelse med GPM kan ikke bli opprettet."
+ CLI_COMPATIBILITY: "Cli-kompatibilitet"
+ CLI_COMPATIBILITY_HELP: "Forsikrer at kun ikke-volatile cache-drivere blir brukt (fil, redis, memcache, osv.)"
+ REINSTALL_PLUGIN: "Reinstaller utvidelse"
+ REINSTALL_THEME: "Reinstaller tema"
+ REINSTALL_THE: "Reinstaller %s"
+ CONFIRM_REINSTALL: "Er du sikker på at du vil reinstallere denne %s?"
+ REINSTALLED_SUCCESSFULLY: "Reinstallasjon av %s var vellykket."
+ ERROR_REINSTALLING_THE: "Reinstallasjon av %s feilet."
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Reinstallasjon av pakken %s var vellykket."
+ REINSTALLATION_FAILED: "Reinstallasjon feilet"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "Installert versjon er ikke siste utgivelse. Ved å klikke `fortsett` vil du fjerne nåværende versjon og installere den siste tilgjengelige utgivelsen."
+ TOOLS: "Verktøy"
+ DIRECT_INSTALL: "Direkte installering"
+ NO_PACKAGE_NAME: "Pakkenavnet er ikke spesifisert."
+ PACKAGE_EXTRACTION_FAILED: "Utpakking av pakke feilet."
+ NOT_VALID_GRAV_PACKAGE: "Ikke en gyldig Grav-pakke."
+ NAME_COULD_NOT_BE_DETERMINED: "Navnet kunne ikke bestemmes."
+ CANNOT_OVERWRITE_SYMLINKS: "Kan ikke overskrive symlinker."
+ ZIP_PACKAGE_NOT_FOUND: "Zip-pakken ble ikke funnet."
+ GPM_OFFICIAL_ONLY: "Kun offisiell GPM"
+ GPM_OFFICIAL_ONLY_HELP: "Bare tillat direkte installering fra det ofisielle GPM-oppbevaringssted."
+ NO_CHILD_TYPE: "Ingen `barne`-type for denne ruten."
+ SORTABLE_PAGES: "Sorterbare sider:"
+ ADMIN_SPECIFIC_OVERRIDES: "Admin-spesifikke overstyringer"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Rekkefølge på `barne`-visning"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Rekkefølgen som `barn` av denne siden skal bli vist i sidevisningen til Admin-utvidelsen."
+ PWD_PLACEHOLDER: "kompleks streng minst 8 tegn lang"
+ PWD_REGEX: "Passord regex"
+ PWD_REGEX_HELP: "Som standard: Passord må innehold minst et tall og en `stor` og en `liten` bokstav. Og må være minst 8 tegn langt."
+ USERNAME_PLACEHOLDER: "kun `små` bokstaver, f.eks. 'admin'"
+ USERNAME_REGEX: "Brukernavn regex"
+ USERNAME_REGEX_HELP: "Som standard: Kun `små` bokstaver, tall, bindestrek og understrek. 3 - 16 tegn."
+ CONTENT_PADDING: "Innpakking av innhold"
+ CONTENT_PADDING_HELP: "Aktiver/inaktiver ekstra avstand rundt innholdet for å gi mer luft."
+ ENABLE_AUTO_METADATA_HELP: "Automatisk oppretting av metadatafiler for bilder med exif-informasjon"
+ 2FA_TITLE: "To-faktor autentisering"
+ 2FA_INSTRUCTIONS: "### To-faktor autentisering\nDu har **2FA** aktivert på denne kontoen. Bruk din **2FA** app for å angi gjeldende **6-sifret kode** for å fullføre påloggingsprosessen."
+ 2FA_LABEL: "Admin-tilgang"
+ 2FA_FAILED: "Ugyldig 2-faktor autentiseringskode. Vennligst prøv igjen..."
+ 2FA_ENABLED: "2FA aktivert"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "2FA hemmelig nøkkel"
+ 2FA_REGENERATE: "Opprett ny"
diff --git a/user/plugins/admin/languages/pl.yaml b/user/plugins/admin/languages/pl.yaml
new file mode 100644
index 0000000..9ddae3a
--- /dev/null
+++ b/user/plugins/admin/languages/pl.yaml
@@ -0,0 +1,687 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "To jest wersja Beta! Używasz jej w produkcji na własne ryzyko..."
+ ADMIN_REPORT_ISSUE: "Znalazłeś błąd? Zgłoś to na GitHub."
+ EMAIL_FOOTER: "Powered by Grav - The Modern Flat File CMS"
+ LOGIN_BTN: "Zaloguj"
+ LOGIN_BTN_FORGOT: "Zapomniałem"
+ LOGIN_BTN_RESET: "Zresetuj hasło"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Wyślij instrukcje resetowania hasła"
+ LOGIN_BTN_CLEAR: "Wyczyść formularz"
+ LOGIN_BTN_CREATE_USER: "Utwórz użytkownika"
+ LOGIN_LOGGED_IN: "Zostałeś pomyślnie zalogowany"
+ LOGIN_FAILED: "Logowanie nie powiodło się"
+ LOGGED_OUT: "Zostałeś wylogowany"
+ RESET_NEW_PASSWORD: "Proszę wprowadzić nowe hasło …"
+ RESET_LINK_EXPIRED: "Link resetujący wygasł, spróbuj ponownie"
+ RESET_PASSWORD_RESET: "Hasło zostało zresetowane"
+ RESET_INVALID_LINK: "Nieprawidłowy link resetujący hasło, spróbuj ponownie"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Instrukcje dotyczące resetowania hasła zostały wysłane poprzez e-mail do %s"
+ FORGOT_FAILED_TO_EMAIL: "Nie udało się wysłać instrukcji resetowania hasła, proszę spróbować ponownie później"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Nie można zresetować hasła dla %s, brak adresu email"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Użytkownik o nazwie %s nie istnieje"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Nie można zresetować hasła. Ta strona nie jest skonfigurowana do wysyłania e-maili"
+ FORGOT_EMAIL_SUBJECT: "%s Żądanie zresetowania hasła"
+ FORGOT_EMAIL_BODY: "
Resetowanie hasła
Drogi %1$s,
Wniosek został złożony w %4$s aby resetować hasło.
Można także skopiować następujący adres URL do pasku adresu przeglądarki:
%2$s
Z poważaniem,
%3$s
"
+ MANAGE_PAGES: "Zarządzaj stronami"
+ CONFIGURATION: "Konfiguracja"
+ PAGES: "Strony"
+ PLUGINS: "Wtyczki"
+ PLUGIN: "Wtyczka"
+ THEMES: "Motywy"
+ LOGOUT: "Wyloguj się"
+ BACK: "Wstecz"
+ NEXT: "Następna"
+ PREVIOUS: "Poprzednia"
+ ADD_PAGE: "Dodaj stronę"
+ ADD_MODULAR: "Dodaj moduł"
+ MOVE: "Przenieś"
+ DELETE: "Usuń"
+ VIEW: "Widok"
+ SAVE: "Zapisz"
+ NORMAL: "Zwykły"
+ EXPERT: "Ekspert"
+ EXPAND_ALL: "Rozwiń wszystko"
+ COLLAPSE_ALL: "Zwiń wszystko"
+ ERROR: "Błąd"
+ CLOSE: "Zamknij"
+ CANCEL: "Anuluj"
+ CONTINUE: "Kontynuuj"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Wymagane potwierdzenie"
+ MODAL_CHANGED_DETECTED_TITLE: "Wykryto zmiany"
+ MODAL_CHANGED_DETECTED_DESC: "Masz niezapisane zmiany. Czy na pewno chcesz opuścić bez zapisywania?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Wymagane potwierdzenie"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Czy na pewno chcesz usunąć ten plik? Nie można cofnąć tej akcji."
+ ADD_FILTERS: "Dodaj filtry"
+ SEARCH_PAGES: "Przeszukaj strony"
+ VERSION: "Wersja"
+ WAS_MADE_WITH: "Został stworzony z"
+ BY: "Przez"
+ UPDATE_THEME: "Aktualizacja motywu"
+ UPDATE_PLUGIN: "Aktualizuj wtyczkę"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "tego motywu jest dostępna"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "tej wtyczki jest dostępna"
+ AUTHOR: "Autor"
+ HOMEPAGE: "Strona domowa"
+ DEMO: "Demo"
+ BUG_TRACKER: "Śledzenie błędów"
+ KEYWORDS: "Słowa kluczowe"
+ LICENSE: "Licencja"
+ DESCRIPTION: "Opis"
+ README: "Plik Readme"
+ REMOVE_THEME: "Usuń motyw"
+ INSTALL_THEME: "Zainstaluj motyw"
+ THEME: "Motyw"
+ BACK_TO_THEMES: "Powrót do motywów"
+ BACK_TO_PLUGINS: "Powrót do wtyczek"
+ CHECK_FOR_UPDATES: "Sprawdź aktualizacje"
+ ADD: "Dodaj"
+ CLEAR_CACHE: "Wyczyść pamięć podręczną"
+ CLEAR_CACHE_ALL_CACHE: "Cała pamięć podręczna"
+ CLEAR_CACHE_ASSETS_ONLY: "Tylko zasoby"
+ CLEAR_CACHE_IMAGES_ONLY: "Tylko obrazy"
+ CLEAR_CACHE_CACHE_ONLY: "Tylko pamięć podręczna"
+ CLEAR_CACHE_TMP_ONLY: "Tylko tymczasowe"
+ DASHBOARD: "Pulpit"
+ UPDATES_AVAILABLE: "Aktualizacje są dostępne"
+ DAYS: "Dni"
+ UPDATE: "Zaktualizuj"
+ BACKUP: "Kopia zapasowa"
+ STATISTICS: "Statystyki"
+ TODAY: "Dziś"
+ WEEK: "Tydzień"
+ MONTH: "Miesiąc"
+ LATEST_PAGE_UPDATES: "Najnowsze aktualizacje stron"
+ MAINTENANCE: "Konserwacja"
+ UPDATED: "Zaktualizowano"
+ MON: "Pon."
+ TUE: "Wt."
+ WED: "Śr."
+ THU: "Czw."
+ FRI: "Pt."
+ SAT: "Sob."
+ SUN: "Niedz."
+ COPY: "Kopiuj"
+ EDIT: "Edytuj"
+ CREATE: "Utwórz"
+ GRAV_ADMIN: "Grav Admin"
+ GRAV_OFFICIAL_PLUGIN: "Oficjalna wtyczka Grav"
+ GRAV_OFFICIAL_THEME: "Oficjalny motyw Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Ta wtyczka jest dowiązana symbolicznie. Aktualizacje nie zostaną wykryte."
+ THEME_SYMBOLICALLY_LINKED: "Ten motyw jest dowiązany symbolicznie. Aktualizacje nie zostaną wykryte"
+ REMOVE_PLUGIN: "Usuń wtyczkę"
+ INSTALL_PLUGIN: "Zainstaluj wtyczkę"
+ AVAILABLE: "Dostępne"
+ INSTALLED: "Zainstalowane"
+ INSTALL: "Zainstaluj"
+ ACTIVE_THEME: "Aktywny motyw"
+ SWITCHING_TO: "Przełącz na"
+ SWITCHING_TO_DESCRIPTION: "Po przełączeniu na inny motyw, nie ma gwarancji, że wszystkie układy stron są wspierane, co może powodować błędy w wyświetlaniu tych stron."
+ SWITCHING_TO_CONFIRMATION: "Czy chcesz kontynuować i zmienić motyw"
+ CREATE_NEW_USER: "Utwórz nowego użytkownika"
+ REMOVE_USER: "Usuń użytkownika"
+ ACCESS_DENIED: "Dostęp zabroniony"
+ ACCOUNT_NOT_ADMIN: "twoje konto nie ma uprawnień administratora"
+ PHP_INFO: "PHP Info"
+ INSTALLER: "Instalator"
+ AVAILABLE_THEMES: "Dostępne motywy"
+ AVAILABLE_PLUGINS: "Dostępnych wtyczki"
+ INSTALLED_THEMES: "Zainstalowane motywy"
+ INSTALLED_PLUGINS: "Zainstalowane wtyczki"
+ BROWSE_ERROR_LOGS: "Przeglądaj dzienniki błędów"
+ SITE: "Strona"
+ INFO: "Info"
+ SYSTEM: "System"
+ USER: "Użytkownik"
+ ADD_ACCOUNT: "Dodaj konto"
+ SWITCH_LANGUAGE: "Zmień język"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Wtyczka pomyślnie włączona"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Wtyczka pomyślnie wyłączona"
+ SUCCESSFULLY_CHANGED_THEME: "Pomyślnie zmieniono domyślny motyw"
+ INSTALLATION_FAILED: "Instalacja nie powiodła się"
+ INSTALLATION_SUCCESSFUL: "Instalacja zakończona sukcesem"
+ UNINSTALL_FAILED: "Odinstalowanie nie powiodło się"
+ UNINSTALL_SUCCESSFUL: "Odinstalowanie powiodło się"
+ SUCCESSFULLY_SAVED: "Zapisano pomyślnie"
+ SUCCESSFULLY_COPIED: "Skopiowano pomyślnie"
+ REORDERING_WAS_SUCCESSFUL: "Pomyślnie zmieniono kolejność"
+ SUCCESSFULLY_DELETED: "Pomyślnie usunięto"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Pomyślnie zmieniono język"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Nie masz wystarczających uprawnień aby wykonać to zadanie"
+ CACHE_CLEARED: "Pamięć cache wyczyszczona"
+ METHOD: "Metoda"
+ ERROR_CLEARING_CACHE: "Błąd czyszczenia pamięci podręcznej"
+ AN_ERROR_OCCURRED: "Wystąpił błąd"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Kopia zapasowa jest gotowa do pobrania"
+ DOWNLOAD_BACKUP: "Ściągnij kopię zapasową"
+ PAGES_FILTERED: "Strony przefiltrowane"
+ NO_PAGE_FOUND: "Nie znaleziono strony"
+ INVALID_PARAMETERS: "Nieprawidłowe parametry"
+ NO_FILES_SENT: "Nie wysłano plików"
+ EXCEEDED_FILESIZE_LIMIT: "Przekroczono limit rozmiaru pliku konfiguracji PHP"
+ UNKNOWN_ERRORS: "Nieznany błąd"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Przekroczono limit rozmiaru pliku konfiguracji Grav"
+ UNSUPPORTED_FILE_TYPE: "Nieobsługiwany typ pliku"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Nie można przenieść przesłanego pliku."
+ FILE_UPLOADED_SUCCESSFULLY: "Plik został pomyślnie przesłany"
+ FILE_DELETED: "Plik usunięty"
+ FILE_COULD_NOT_BE_DELETED: "Plik nie może zostać usunięty"
+ FILE_NOT_FOUND: "Plik nie znaleziony"
+ NO_FILE_FOUND: "Nie znaleziono pliku"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav został pomyślnie zaktualizowany do"
+ GRAV_UPDATE_FAILED: "Aktualizacja Grav nie powiodła się"
+ EVERYTHING_UPDATED: "Wszystko zaktualizowane"
+ UPDATES_FAILED: "Aktualizacja nieudana"
+ AVATAR_BY: "Awatar z"
+ AVATAR_UPLOAD_OWN: "Lub prześlij swój..."
+ LAST_BACKUP: "Ostatnia kopia zapasowa"
+ FULL_NAME: "Pełne imię"
+ USERNAME: "Nazwa Użytkownika"
+ EMAIL: "Adres E-Mail"
+ USERNAME_EMAIL: "Nazwa użytkownika lub e-mail"
+ PASSWORD: "Hasło"
+ PASSWORD_CONFIRM: "Potwierdź hasło"
+ TITLE: "Tytuł"
+ LANGUAGE: "Język"
+ ACCOUNT: "Konto"
+ EMAIL_VALIDATION_MESSAGE: "Adres e-mail musi być poprawny"
+ PASSWORD_VALIDATION_MESSAGE: "Hasło musi zawierać co najmniej jedną cyfrę, jedną wielką i małą literę i co najmniej 8 lub więcej znaków"
+ LANGUAGE_HELP: "Ustaw ulubiony język"
+ MEDIA: "Media"
+ DEFAULTS: "Domyślne"
+ SITE_TITLE: "Tytuł strony"
+ SITE_TITLE_PLACEHOLDER: "Pełny tytuł strony"
+ SITE_TITLE_HELP: "Domyślny tytuł witryny, często używany w motywach"
+ SITE_DEFAULT_LANG: "Domyślny język"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Domyślny język używany przez tag motywu"
+ SITE_DEFAULT_LANG_HELP: "Domyślny język używany przez tag motywu"
+ DEFAULT_AUTHOR: "Domyślny autor"
+ DEFAULT_AUTHOR_HELP: "Domyślna nazwa autora, często używana w motywach lub zawartości strony"
+ DEFAULT_EMAIL: "Domyślny Email"
+ DEFAULT_EMAIL_HELP: "Domyślny e-mail dla motywów lub stron"
+ TAXONOMY_TYPES: "Typy taksonomii"
+ TAXONOMY_TYPES_HELP: "Typy taksonomii muszą być tutaj zdefiniowane, jeśli chcesz z nich korzystać na stronach"
+ PAGE_SUMMARY: "Podsumowanie strony"
+ ENABLED: "Włączony"
+ ENABLED_HELP: "Włącz podsumowanie strony (podsumowanie będzie pobrane z treści strony)"
+ 'YES': "Tak"
+ 'NO': "Nie"
+ SUMMARY_SIZE: "Rozmiar podsumowania"
+ SUMMARY_SIZE_HELP: "Ilość znaków z treści strony wykorzystana do utworzenia podsumowania"
+ FORMAT: "Format"
+ FORMAT_HELP: "krótki = użyj pierwsze wystąpienie ogranicznika albo rozmiar; długi = ogranicznik podsumowania zostanie zignorowany"
+ SHORT: "Krótkie"
+ LONG: "Długie"
+ DELIMITER: "Separator"
+ DELIMITER_HELP: "Znacznik podsumowania (domyślnie '===')"
+ METADATA: "Metadane"
+ METADATA_HELP: "Domyślne wartości metadanych, które będą wyświetlane na każdej stronie, chyba że są nadpisane przez ustawienia strony"
+ NAME: "Nazwa"
+ CONTENT: "Zawartość"
+ REDIRECTS_AND_ROUTES: "Przekierowania i Trasy"
+ CUSTOM_REDIRECTS: "Niestandardowe przekierowania"
+ CUSTOM_REDIRECTS_HELP: "trasy do przekierowania do innych stron. Można użyć wyrażenia regularnego regex"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/twój/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/twoje/przekierowanie"
+ CUSTOM_ROUTES: "Trasy niestandardowe"
+ CUSTOM_ROUTES_HELP: "trasy do aliasu do innych stron. Można użyć wyrażenia regularnego regex"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/twój/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/twoja/trasa"
+ FILE_STREAMS: "Strumień plików"
+ DEFAULT: "Domyślne"
+ PAGE_MEDIA: "Media strony"
+ OPTIONS: "Opcje"
+ PUBLISHED: "Opublikowana"
+ PUBLISHED_HELP: "Domyślnie strona jest opublikowana, chyba że ustawiono czas publikacji, albo czas odpublikowania lub odpublikowano stronę ręcznie"
+ DATE: "Data"
+ DATE_HELP: "Zmienna date pozwala ustawić datę związaną z tą stroną."
+ PUBLISHED_DATE: "Data publikacji"
+ PUBLISHED_DATE_HELP: "Można podać datę, kiedy automatycznie opublikować."
+ UNPUBLISHED_DATE: "Data odpublikowania"
+ UNPUBLISHED_DATE_HELP: "Można podać datę, kiedy automatycznie odpublikować."
+ ROBOTS: "Roboty"
+ TAXONOMIES: "Taksonomia"
+ TAXONOMY: "Taksonomia"
+ ADVANCED: "Zaawansowane"
+ SETTINGS: "Ustawienia"
+ FOLDER_NUMERIC_PREFIX: "Numeryczny prefiks folderu"
+ FOLDER_NUMERIC_PREFIX_HELP: "Numeryczny prefiks, umożliwia ręcznie ustawić kolejność, oraz wyznacza widoczność"
+ FOLDER_NAME: "Nazwa folderu"
+ FOLDER_NAME_HELP: "Nazwa folderu, w którym będzie przechowywana strona z jej zawartością"
+ PARENT: "Rodzic"
+ DEFAULT_OPTION_ROOT: "- Rdzeń -"
+ DEFAULT_OPTION_SELECT: "- Wybierz -"
+ DISPLAY_TEMPLATE: "Wyświetl szablon"
+ DISPLAY_TEMPLATE_HELP: "Typ strony, czyli który szablon Twig ma renderować stronę"
+ BODY_CLASSES: "Klasy"
+ ORDERING: "Sortowanie"
+ PAGE_ORDER: "Kolejność stron"
+ OVERRIDES: "Nadpisania"
+ MENU: "Menu"
+ MENU_HELP: "Napis do użycia w menu. Jeżeli nie jest podany, domyślnie zostanie użyty Tytuł."
+ SLUG: "Adres"
+ SLUG_HELP: "Pozwala ustawić część adresu URL który prowadzi do strony"
+ SLUG_VALIDATE_MESSAGE: "Adres musi zawierać tylko małe litery znaków alfanumerycznych i kresek"
+ PROCESS: "Przetwarzanie"
+ PROCESS_HELP: "Kontroluje jak strony są przetwarzane. Można ustawić dla strony, zamiast globalnie"
+ DEFAULT_CHILD_TYPE: "Domyślny typ dziecka"
+ USE_GLOBAL: "Użyj Globalny"
+ ROUTABLE: "Routing"
+ ROUTABLE_HELP: "Czy strona jest osiągalna za pomocą adresu URL"
+ CACHING: "Buforowanie"
+ VISIBLE: "Widoczna"
+ VISIBLE_HELP: "Określa, czy strona jest widoczna w obszarze nawigacji."
+ DISABLED: "Wyłączony"
+ ITEMS: "Elementy"
+ ORDER_BY: "Uporządkuj według"
+ ORDER: "Uporządkuj"
+ FOLDER: "Katalog"
+ ASCENDING: "Rosnąco"
+ DESCENDING: "Malejąco"
+ ADD_MODULAR_CONTENT: "Dodaj treści modułowe"
+ PAGE_TITLE: "Tytuł strony"
+ PAGE_TITLE_HELP: "Tytuł strony"
+ PAGE: "Strona"
+ MODULAR_TEMPLATE: "Szablon modułowy"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Nazwa pliku"
+ PARENT_PAGE: "Strona nadrzędna"
+ HOME_PAGE: "Strona główna"
+ HOME_PAGE_HELP: "Strona, którą Grav użyje jako stronę główną"
+ DEFAULT_THEME: "Domyślny motyw"
+ DEFAULT_THEME_HELP: "Ustaw domyślny motyw, który Grav ma używać (domyślnie Antimatter)"
+ TIMEZONE: "Strefa czasowa"
+ TIMEZONE_HELP: "Zastąp domyślną strefę czasową serwera"
+ SHORT_DATE_FORMAT: "Krótki format daty"
+ SHORT_DATE_FORMAT_HELP: "Ustaw format krótkiej daty, który może być używany przez motywy"
+ LONG_DATE_FORMAT: "Długi format daty"
+ LONG_DATE_FORMAT_HELP: "Ustaw format długiej daty, który może być używany przez motywy"
+ DEFAULT_ORDERING: "Domyślna kolejność"
+ DEFAULT_ORDERING_HELP: "Strony na liście będą renderowane w tej kolejności, chyba że jest ona zastępowana"
+ DEFAULT_ORDERING_DEFAULT: "Domyślnie - na podstawie nazwy folderu"
+ DEFAULT_ORDERING_FOLDER: "Katalog - na podstawie nazwy foldery (bez prefiksu)"
+ DEFAULT_ORDERING_TITLE: "Tytuł - na podstawie tytułu pola w nagłówku"
+ DEFAULT_ORDERING_DATE: "Data - na podstawie pola daty w nagłówku"
+ DEFAULT_ORDER_DIRECTION: "Domyślny kierunek numerowania"
+ DEFAULT_ORDER_DIRECTION_HELP: "Kierunek stron na liście"
+ DEFAULT_PAGE_COUNT: "Domyślna liczba stron"
+ DEFAULT_PAGE_COUNT_HELP: "Domyślna liczba stron na liście"
+ DATE_BASED_PUBLISHING: "Publikacja oparta na dacie"
+ DATE_BASED_PUBLISHING_HELP: "Automatycznie publikuj lub odpublikuj post na podstawie ich daty"
+ EVENTS: "Zdarzenia"
+ EVENTS_HELP: "Włączanie lub wyłączanie określonych zdarzeń. Wyłączanie może popsuć wtyczki"
+ REDIRECT_DEFAULT_ROUTE: "Przekieruj domyślną ścieżkę"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Automatyczne przekierowanie do domyślnej trasy dla tej strony"
+ LANGUAGES: "Języki"
+ SUPPORTED: "Obsługiwane"
+ SUPPORTED_HELP: "Dwu literowe kody języków oddzielone przecinkami (np. 'pl,en,de')"
+ TRANSLATIONS_ENABLED: "Tłumaczenia włączone"
+ TRANSLATIONS_ENABLED_HELP: "Włącza tłumaczenia Grav, wtyczek i rozszerzeń"
+ TRANSLATIONS_FALLBACK: "Tłumaczenia zastępcze"
+ TRANSLATIONS_FALLBACK_HELP: "Odnoś się do innych wspieranych tłumaczeń, jeśli brak tłumaczenia w aktywnym języku"
+ ACTIVE_LANGUAGE_IN_SESSION: "Aktywny język w sesji"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Przechowuj aktualny język w sesji"
+ HTTP_HEADERS: "Nagłówki HTTP"
+ EXPIRES: "Wygasa"
+ EXPIRES_HELP: "Po jakim czasie nagłówek wygasa. Wartość w sekundach."
+ CACHE_CONTROL: "Dyrektywa HTTP Cache-Control"
+ CACHE_CONTROL_HELP: "Należy wprowadzić prawidłową wartość cache-control, taką jak `no-cache, no-store, must-revalidate`"
+ LAST_MODIFIED: "Ostatnia modyfikacja"
+ LAST_MODIFIED_HELP: "Ustawia ostatni zmodyfikowany nagłówek, który może pomóc w optymalizacji serwera proxy i buforowania przeglądarki"
+ ETAG: "ETag"
+ ETAG_HELP: "Ustawia Etag w nagłówku, aby pomóc zidentyfikować kiedy strona została zmodyfikowana"
+ VARY_ACCEPT_ENCODING: "Odróżnia kodowanie plików"
+ VARY_ACCEPT_ENCODING_HELP: "Ustawia \"Vary: Accept Encoding\" w nagłówku w celu pomocy z proxy i cache'owaniem CDN"
+ MARKDOWN_EXTRA_HELP: "Włącz domyślną obsługę Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ AUTO_LINE_BREAKS: "Automatyczne przejścia do nowej linii"
+ AUTO_LINE_BREAKS_HELP: "Włącz obsługę dla automatycznych podziałów wierszy w markdown"
+ AUTO_URL_LINKS: "Automatyczne linki URL"
+ AUTO_URL_LINKS_HELP: "Włącz automatyczną konwersję adresów URL w hiperłącza HTML"
+ ESCAPE_MARKUP: "Składnia znaku ucieczki"
+ ESCAPE_MARKUP_HELP: "Ucieczka tagów w encjach HTML"
+ CACHING_HELP: "Włącza lub wyłącza buforowanie dla Grav"
+ CACHE_CHECK_METHOD: "Metoda wyboru pamięci podręcznej"
+ CACHE_CHECK_METHOD_HELP: "Wybierz metodę używaną przez Grav do sprawdzania, czy pliki strony zostały zmodyfikowane."
+ CACHE_DRIVER: "Sterownik pam. podręcznej"
+ CACHE_DRIVER_HELP: "Wybierz który sterownik pamięci podręcznej powinien zostać użyty. 'Auto' spróbuje znaleźć najlepszy"
+ CACHE_PREFIX: "Prefiks pam. podręcznej"
+ CACHE_PREFIX_HELP: "Identyfikator Grav. Nie zmieniać, chyba że wiesz co robisz."
+ LIFETIME: "Czas życia"
+ LIFETIME_HELP: "Ustaw okres życia plików pamięci podręcznej w sekundach. 0 = nieskończoność"
+ GZIP_COMPRESSION: "Kompresja Gzip"
+ GZIP_COMPRESSION_HELP: "Włącz kompresję GZip stron dla zwiększenia wydajności."
+ TWIG_TEMPLATING: "Szablony Twig"
+ TWIG_CACHING: "Buforowanie Twig"
+ TWIG_CACHING_HELP: "Kontroluj mechanizm buforowania szablonów Twig. Zostaw włączone dla najlepszej wydajności."
+ TWIG_DEBUG: "Debugowanie Twig"
+ TWIG_DEBUG_HELP: "Pozwala na nie wczytywanie debugera Twig"
+ DETECT_CHANGES: "Wykrywaj zmiany"
+ DETECT_CHANGES_HELP: "Twig automatycznie przekompiluje pliki pamięci podręcznej szablonów Twig jeśli wystąpiły w nich zmiany"
+ AUTOESCAPE_VARIABLES: "Znak ucieczki przed wartościami"
+ AUTOESCAPE_VARIABLES_HELP: "Wstawia znak ucieczki przed każdą definicją wartości. Włączenie tego zazwyczaj psuje wygląd strony internetowej"
+ ASSETS: "Zasoby"
+ CSS_PIPELINE: "Koncentrowanie CSS"
+ CSS_PIPELINE_HELP: "Koncentrowanie CSS jest złączeniem wielu zasobów CSS w jeden plik"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Umieść zewnętrzne w potoku CSS"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Zewnętrzne adresy URL mają czasem względne odwołania do plików i nie powinny być częścią potoku"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Wyświetl najpierw potok CSS"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Wyświetl potok CSS przed jakimikolwiek innymi odniesieniami CSS które nie są włączone"
+ CSS_MINIFY: "Minifikuj CSS"
+ CSS_MINIFY_HELP: "Zmniejsz pliki CSS podczas koncentrowania"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "Zastąp zmniejszanie CSS pod Windows"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Zastępuje zmniejszanie na platformach Windows. Wyłączone domyślnie przez ThreadStackSize"
+ CSS_REWRITE: "Przepisz CSS"
+ CSS_REWRITE_HELP: "Przepisz każdy względny URL do CSS podczas koncentrowania"
+ JAVASCRIPT_PIPELINE: "Koncentrowanie JavaScript"
+ JAVASCRIPT_PIPELINE_HELP: "Koncentrowanie JavaScript jest złączeniem wielu zasobów JavaScript w jeden plik"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Umieść zewnętrzne w potoku JS"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Zewnętrzne adresy URL mają czasem względne odwołania do plików i nie powinny być częścią potoku"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Wyświetl najpierw potok JS"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Wyświetl potok JS przed jakimikolwiek innymi odniesieniami JS które nie są włączone"
+ JAVASCRIPT_MINIFY: "Minifikuj JavaScript"
+ JAVASCRIPT_MINIFY_HELP: "Zmniejsz pliki JS podczas koncentrowania"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Włącz sygnatury czasowe na zasobach"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Włącz sygnatury czasowe zasobów"
+ COLLECTIONS: "Kolekcje"
+ ERROR_HANDLER: "Obsługa błędów"
+ DISPLAY_ERRORS: "Wyświetlaj błędy"
+ DISPLAY_ERRORS_HELP: "Wyświetlanie pełnego backtrace przy błędzie strony"
+ LOG_ERRORS: "Rejestruj błędy"
+ LOG_ERRORS_HELP: "Rejestruj błędy do folderu /logs"
+ DEBUGGER: "Debuger"
+ DEBUGGER_HELP: "Włącz Grav debugger i następujące ustawienia"
+ DEBUG_TWIG: "Debuguj Twig"
+ DEBUG_TWIG_HELP: "Włącz debugowanie szablonów Twig"
+ SHUTDOWN_CLOSE_CONNECTION: "Wyłącz zamknięte połączenie"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Zamyka połączenie przed wywołaniem onShutdown(). Ustaw Nie do debugowania"
+ DEFAULT_IMAGE_QUALITY: "Domyślna jakość zdjęć"
+ DEFAULT_IMAGE_QUALITY_HELP: "Domyślna jakość obrazów podczas ich przetwarzania lub buforowania (85%)"
+ CACHE_ALL: "Buforuj wszystkie obrazy"
+ CACHE_ALL_HELP: "Umieść wszystkie obrazy do pamięci podręcznej, nawet jeśli obrazy nie były modyfikowane"
+ IMAGES_DEBUG: "Debugowanie obrazków"
+ IMAGES_DEBUG_HELP: "Pokazuje nakładkę na obrazkach, pokazującą wartość pikseli obrazu"
+ UPLOAD_LIMIT: "Limit wysyłanego pliku"
+ UPLOAD_LIMIT_HELP: "Maksymalny rozmiar przesyłanych plików w bajtach (0 = nieograniczony)"
+ ENABLE_MEDIA_TIMESTAMP: "Włącz sygnatury czasowe w mediach"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Dołącza sygnatury czasowe oparte na dacie ostatniej modyfikacji do każdego elementu mediów"
+ SESSION: "Sesja"
+ SESSION_ENABLED_HELP: "Włącz obsługę sesji w Grav"
+ TIMEOUT: "Limit czasu"
+ TIMEOUT_HELP: "Ustawia limit czasu sesji w sekundach"
+ SESSION_NAME_HELP: "Identyfikator używany do utworzenia nazwy pliku cookie"
+ ABSOLUTE_URLS: "Bezwzględne adresy URL"
+ ABSOLUTE_URLS_HELP: "Bezwzględne lub względne adresy URL dla \"base_url\""
+ PARAMETER_SEPARATOR: "Separator parametrów"
+ PARAMETER_SEPARATOR_HELP: "Separator dla parametrów, który może zostać zmieniony dla Apache w systemie Windows"
+ TASK_COMPLETED: "Zadanie zakończone"
+ EVERYTHING_UP_TO_DATE: "Wszystko jest aktualne"
+ UPDATES_ARE_AVAILABLE: "aktualizacja(/e/i) dostępna(/e/nych)"
+ IS_AVAILABLE_FOR_UPDATE: "ma dostępne aktualizacje"
+ IS_NOW_AVAILABLE: "jest już dostępny"
+ CURRENT: "Bieżący"
+ UPDATE_GRAV_NOW: "Zaktualizuj Grav"
+ GRAV_SYMBOLICALLY_LINKED: "Grav jest dowiązany symbolicznie. Aktualizacje nie zostaną wykryte"
+ UPDATING_PLEASE_WAIT: "Aktualizowanie... proszę czekać, trwa pobieranie"
+ OF_THIS: "z tego"
+ OF_YOUR: "z twoich"
+ HAVE_AN_UPDATE_AVAILABLE: "ma dostępną aktualizację"
+ SAVE_AS: "Zapisz jako"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Czy na pewno chcesz usunąć tą stronę i wszystkie jej podstrony? Jeżeli ta strona została przetłumaczona na inne języki, te tłumaczenia pozostaną i będą musiały zostać usunięte niezależnie. W przeciwnym wypadku, folder z tą stroną zostanie usunięty razem z jej podstronami. Nie można cofnąć tej czynności."
+ AND: "i"
+ UPDATE_AVAILABLE: "Dostępna aktualizacja"
+ METADATA_KEY: "Klucz (np. 'Keywords')"
+ METADATA_VALUE: "Wartość (np. \"Blog, Grav\")"
+ USERNAME_HELP: "Nazwa użytkownika powinna mieć od 3 do 16 znaków, włączając w to małe litery, cyfry, znaki podkreślenia i myślniki. Wielkie litery, spacje oraz znaki specjalne są niedozwolone"
+ FULLY_UPDATED: "Aktualny"
+ SAVE_LOCATION: "Lokalizacja pliku konfiguracji"
+ PAGE_FILE: "Szablon strony"
+ PAGE_FILE_HELP: "Nazwa pliku szablonu strony, oraz domyślnie wyświetlany szablon dla tej strony"
+ NO_USER_ACCOUNTS: "Brak użytkowników, proszę utworzyć pierwszego użytkownika..."
+ REDIRECT_TRAILING_SLASH: "Przekieruj końcowy ukośnik"
+ REDIRECT_TRAILING_SLASH_HELP: "Wykonaj przekierowanie 301, zamiast obsługiwać adresy URI z końcowym ukośnikiem."
+ DEFAULT_DATE_FORMAT: "Format daty"
+ DEFAULT_DATE_FORMAT_HELP: "Format daty dla strony używany przez Grav. Domyślnie, Grav spróbuje odgadnąć format daty, ale możesz określić swój format używając składni PHP (np.: H:i Y-m-d)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Zgadnij automatycznie"
+ IGNORE_FILES: "Ignoruj pliki"
+ IGNORE_FILES_HELP: "Określone pliki do zignorowania podczas przetwarzania strony"
+ IGNORE_FOLDERS: "Ignoruj foldery"
+ IGNORE_FOLDERS_HELP: "Określone foldery do zignorowania podczas przetwarzania strony"
+ HTTP_ACCEPT_LANGUAGE: "Pobierz język z przegladarki"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Możesz spróbować ustawić język oparty na tagu nagłówka \"http_accept_language\" w przeglądarce"
+ OVERRIDE_LOCALE: "Nadpisze lokalne"
+ OVERRIDE_LOCALE_HELP: "Zastąp ustawienia lokalne w PHP w oparciu o bieżący język"
+ REDIRECT: "Przekierowanie strony"
+ REDIRECT_HELP: "Podaj trasę do strony, albo zewnętrzny URL gdzie ma być przekierowana ta strona np. \"/jakaś/trasa\" albo \"http://innyadres.com\""
+ PLUGIN_STATUS: "Status wtyczki"
+ INCLUDE_DEFAULT_LANG: "Załącz domyślny język"
+ INCLUDE_DEFAULT_LANG_HELP: "Zostaną dołączone do adresów URL kody języka z domyślnie ustawionego języka (np 'pl/blog/moj-post')"
+ ALLOW_URL_TAXONOMY_FILTERS: "Filtry taksonomii adresów URL"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Zbiory stron pozwalaną na filtrowanie używając `/taxonomy:value`."
+ REDIRECT_DEFAULT_CODE: "Domyślny kod przekierowania"
+ REDIRECT_DEFAULT_CODE_HELP: "Kod odpowiedzi HTTP dla przekierowań"
+ IGNORE_HIDDEN: "Ignoruj ukryte"
+ IGNORE_HIDDEN_HELP: "Ignoruj wszystkie pliki i foldery, które zaczynają się kropką"
+ WRAPPED_SITE: "Edytowana strona"
+ WRAPPED_SITE_HELP: "Pozwala motywom/pluginom sprawdzić czy Grav znajduje się wewnątrz innej platformy"
+ FALLBACK_TYPES: "Dozwolone typy zastępcze"
+ INLINE_TYPES_HELP: "Lista typów plików, które powinny być wyświetlane zamiast pobierane"
+ APPEND_URL_EXT: "Zmień rozszerzenie URL"
+ APPEND_URL_EXT_HELP: "Doda niestandardowe rozszerzenie do adresów URL stron. To oznacza że Grav będzie szukał pliku szablonu wg. '..twig'"
+ PAGE_MODES: "Tryby stron"
+ PAGE_TYPES: "Typy stron"
+ ACCESS_LEVELS: "Poziomy dostępu"
+ GROUPS: "Grupy"
+ GROUPS_HELP: "Lista grup, których użytkownik jest częścią"
+ ADMIN_ACCESS: "Uprawnienia admina"
+ SITE_ACCESS: "Dostęp do witryny"
+ INVALID_SECURITY_TOKEN: "Nieprawidłowy token bezpieczeństwa"
+ ACTIVATE: "Aktywuj"
+ TWIG_UMASK_FIX: "Poprawka Umask"
+ TWIG_UMASK_FIX_HELP: "Domyślnie Twig tworzy pliki pamięci podręcznej z uprawnieniami 0755, włączenie tej opcji zmienia ich uprawnienia na 0775"
+ CACHE_PERMS: "Uprawnienia pamięci podręcznej"
+ CACHE_PERMS_HELP: "Domyślne uprawnienia folderów pamięci podręcznej. Zazwyczaj 0755 albo 0775 w zależności od konfiguracji"
+ REMOVE_SUCCESSFUL: "Usunięcie udane"
+ REMOVE_FAILED: "Usunięcie nie powiodło się"
+ HIDE_HOME_IN_URLS: "Ukryj ścieżkę do strony startowej"
+ HIDE_HOME_IN_URLS_HELP: "Gwarantuje, że domyślne trasy przekierowań stron pod stroną główną nie odnoszą się do typowej trasy przekierowań strony głównej"
+ TWIG_FIRST: "Najpierw przetwarzaj Twig"
+ TWIG_FIRST_HELP: "Jeśli włączyłeś przetwarzanie strony w Twig, możesz skonfigurować go aby przetworzył stronę przed albo po znacznikach markdown"
+ SESSION_SECURE: "Bezpieczeństwo"
+ SESSION_SECURE_HELP: "Jeśli prawda, wtedy komunikacja z ciasteczkiem musi być wykonana przez transmisję szyfrowaną. UWAGA: Włącz tą opcję tylko jeśli strona działa wyłącznie na HTTPS"
+ SESSION_HTTPONLY: "Tylko HTTP"
+ SESSION_HTTPONLY_HELP: "Jeśli prawda, wtedy ciasteczka mogą być używane tylko przez HTTP, a modyfikacje przez JavaScript nie będą dozwolone"
+ REVERSE_PROXY: "Odwrotne proxy"
+ REVERSE_PROXY_HELP: "Włącz tą opcję jeśli masz odwrotne proxy i masz problemy z adresami URL które zawierają niepoprawne porty"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Nieprawidłowy frontmatter, nie można zapisać"
+ ADD_FOLDER: "Dodaj folder"
+ PROXY_URL: "Adres URL proxy"
+ PROXY_URL_HELP: "Wpisz HOST albo IP proxy i PORT"
+ NOTHING_TO_SAVE: "Nie ma nic do zapisania"
+ FILE_ERROR_ADD: "Wystąpił błąd podczas próby dodania pliku"
+ FILE_ERROR_UPLOAD: "Wystąpił błąd podczas próby przesłania pliku"
+ FILE_UNSUPPORTED: "Nieobsługiwany typ pliku"
+ ADD_ITEM: "Dodaj element"
+ FILE_TOO_LARGE: "Ten plik jest zbyt duży, aby go przesłać; maksymalny dozwolony rozmiar to %s zgodnie z twoimi ustawieniami PHP. Zwiększ wartość `post_max_size` w swoich ustawieniach PHP"
+ INSTALLING: "Trwa instalacja"
+ LOADING: "Trwa ładowanie.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Następujące zależności muszą być najpierw spełnione:"
+ ERROR_INSTALLING_PACKAGES: "Wystąpił błąd podczas instalacji paczek"
+ INSTALLING_DEPENDENCIES: "Trwa instalacja zależności..."
+ INSTALLING_PACKAGES: "Trwa instalacja paczek.."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Paczki zostały poprawnie zainstalowane."
+ READY_TO_INSTALL_PACKAGES: "Gotowy do instalacji paczek"
+ PACKAGES_NOT_INSTALLED: "Paczki nie zainstalowane"
+ PACKAGES_NEED_UPDATE: "Paczki są już zainstalowane, ale zbyt nieaktualne"
+ PACKAGES_SUGGESTED_UPDATE: "Paczki są już zainstalowane, w poprawnych wersjach, ale zostaną zaktualizowane do najnowszych wersji"
+ REMOVE_THE: "Usuń %s"
+ CONFIRM_REMOVAL: "Czy na pewno chcesz usunąć %s?"
+ REMOVED_SUCCESSFULLY: "%s została pomyślnie usunięta"
+ ERROR_REMOVING_THE: "Wystąpił błąd podczas usuwania %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s wymagał następujących zależności, które nie są wymagane przez inne zainstalowane paczki. Jeżeli ich nie używasz, możesz je bezpośrednio tutaj usunąć."
+ READY_TO_UPDATE_PACKAGES: "Gotowy do zaktualizowania paczek"
+ ERROR_UPDATING_PACKAGES: "Wystąpił błąd podczas aktualizacji pakietu/ów"
+ UPDATING_PACKAGES: "Trwa aktualizacja pakietów..."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Pomyślnie zaktualizowano pakiety."
+ UPDATING: "Aktualizowanie"
+ GPM_RELEASES: "Wydania GPM"
+ GPM_RELEASES_HELP: "Wybierz 'Testowe' aby zainstalować wersje beta lub testowe"
+ GPM_METHOD: "Metody zdalnego pobierania"
+ GPM_METHOD_HELP: "Gdy ustawione na Auto, Grav sprawdzi dostępność funkcji fopen i ją użyje jeśli jest dostępna, w przeciwnym wypadku używając cURL. Aby wymusić użycie jednego z nich, zmień to ustawienie."
+ GPM_VERIFY_PEER: "Zdalnie sprawdź certyfikat (SSL)"
+ GPM_VERIFY_PEER_HELP: "Niektórzy dostawcy nie przyjmują certyfikatu SSL getgrav.org, co uniemożliwia działanie GPM. Jeśli masz ten problem, wyłączenie tego ustawienia może pomóc"
+ AUTO: "Auto"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabilne"
+ TESTING: "Testowe"
+ FRONTMATTER_PROCESS_TWIG: "Przetwarzaj Twig we frontmatter"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Gdy jest włączone, możesz używać zmiennych Twig we frontmatter dla strony"
+ FRONTMATTER_IGNORE_FIELDS: "Ignoruj pola frontmatter"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Niektóre pola frontmatter mogą zawierać Twig, ale nie powinny być przetwarzane, np. 'forms'"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Pomyślnie zainstalowano pakiet %s"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Sortowanie niemożliwe z powodu ustawień nadrzędnych"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Strona nie jest widoczna, sortowanie wyłączone"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Sortowanie za pośrednictwem panelu admina nie jest obsługiwane, ponieważ istnieje ponad 200 stron rodzeństwa"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Sortowanie stron jest wyłączone dla tej strony, ponieważ Numeryczny prefiks folderu nie jest włączony"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "Uwaga: Nie można dodać mediów przed zapisaniem. Kliknij 'Zapisz' na górze strony"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "Uwaga: Należy zapisać stronę przed dodaniem plików."
+ DROP_FILES_HERE_TO_UPLOAD: "Upuść pliki tutaj lub kliknij ten przycisk"
+ INSERT: "Wstaw"
+ UNDO: "Cofnij"
+ REDO: "Ponów"
+ HEADERS: "Nagłówki"
+ BOLD: "Pogrubienie"
+ ITALIC: "Kursywa"
+ STRIKETHROUGH: "Przekreślenie"
+ SUMMARY_DELIMITER: "Znacznik podsumowania"
+ LINK: "Hiperłącze"
+ IMAGE: "Obraz"
+ BLOCKQUOTE: "Blok cytowany"
+ UNORDERED_LIST: "Lista punktowana"
+ ORDERED_LIST: "Lista numerowana"
+ EDITOR: "Edytor"
+ PREVIEW: "Podgląd"
+ FULLSCREEN: "Pełny ekran"
+ MODULAR: "Modułowa"
+ NON_ROUTABLE: "Bez routingu"
+ NON_MODULAR: "Niemodułowa"
+ NON_VISIBLE: "Niewidoczna"
+ NON_PUBLISHED: "Nieopublikowana"
+ CHARACTERS: "znaków"
+ PUBLISHING: "Publikacja"
+ NOTIFICATIONS: "Powiadomienia"
+ MEDIA_TYPES: "Typy mediów"
+ IMAGE_OPTIONS: "Opcje obrazu"
+ MIME_TYPE: "Typ MIME"
+ THUMB: "Miniatura"
+ TYPE: "Typ"
+ FILE_EXTENSION: "Rozszerzenie pliku"
+ LEGEND: "Legenda stron"
+ MEMCACHE_SERVER: "Serwer Memcache"
+ MEMCACHE_SERVER_HELP: "Adres serwera Memcache"
+ MEMCACHE_PORT: "Port Memcache"
+ MEMCACHE_PORT_HELP: "Port serwera Memcache"
+ MEMCACHED_SERVER: "Serwer Memcached"
+ MEMCACHED_SERVER_HELP: "Adres serwera Memcached"
+ MEMCACHED_PORT: "Port Memcached"
+ MEMCACHED_PORT_HELP: "Port serwera Memcached"
+ REDIS_SERVER: "Serwer Redis"
+ REDIS_SERVER_HELP: "Adres serwera Redis"
+ REDIS_PORT: "Port Redis"
+ REDIS_PORT_HELP: "Port serwera Redis"
+ REDIS_PASSWORD: "Hasło/sekret Redis"
+ ALL: "Wszystkie"
+ FROM: "z"
+ TO: "do"
+ RELEASE_DATE: "Data wydania"
+ SORT_BY: "Sortuj według"
+ RESOURCE_FILTER: "Filtr..."
+ FORCE_SSL: "Wymuś SSL"
+ FORCE_SSL_HELP: "Globalnie wymusza użycie SSL, jeśli włączone, Grav przekierowuje połączenia ze stroną przy użyciu HTTP na HTTPS"
+ NEWS_FEED: "Aktualności"
+ EXTERNAL_URL: "Zewnętrzny URL"
+ SESSION_PATH: "Ścieżka sesji"
+ SESSION_PATH_HELP: "Użyj tej opcji tylko jeśli używasz niestandardowego bazowego URL (zmieniasz domenę / subfolder strony)"
+ CUSTOM_BASE_URL: "Niestandardowy bazowy adres URL"
+ CUSTOM_BASE_URL_HELP: "Użyj tej opcji jeśli chcesz zmienić domenę strony albo użyć innego subfolderu, niż ten używany przez Grav. Przykład: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Nie można użyć "%s" poza stronami.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Nie można przesłać pliku %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Nie można przenieść pliku %s do "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Anuluj przesyłanie'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Czy na pewno chcesz anulować przesyłanie?'
+ DROPZONE_DEFAULT_MESSAGE: 'Upuść pliki tutaj lub kliknij ten przycisk'
+ DROPZONE_FALLBACK_MESSAGE: 'Twoja przeglądarka nie wspiera przesyłania plików metodą przeciągnij i upuść.'
+ DROPZONE_FALLBACK_TEXT: 'Użyj formularza poniżej, aby przesłać pliki tak jak w dawnych czasach.'
+ DROPZONE_FILE_TOO_BIG: 'Przekroczono rozmiar pliku ({{filesize}}MiB). Maksymalny rozmiar pliku: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Nie można przesłać plików tego typu."
+ DROPZONE_MAX_FILES_EXCEEDED: "Nie można już przesłać więcej plików."
+ DROPZONE_REMOVE_FILE: "Usuń plik"
+ DROPZONE_RESPONSE_ERROR: "Serwer odpowiedział kodem {{statusCode}}."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Włącz buforowanie panelu admina"
+ ADMIN_CACHING_HELP: "Buforowanie panelu admina można kontrolować niezależnie od reszty strony"
+ DESTINATION_NOT_SPECIFIED: "Cel nie został określony"
+ UPLOAD_ERR_NO_TMP_DIR: "Folder tymczasowy nie został odnaleziony"
+ SESSION_SPLIT: "Podział sesji"
+ SESSION_SPLIT_HELP: "Niezależne, oddzielne sesje między stroną i innymi wtyczkami (takimi jak panel admina)"
+ ERROR_FULL_BACKTRACE: "Pełna informacja o błędzie"
+ ERROR_SIMPLE: "Uproszczona nazwa błędu"
+ ERROR_SYSTEM: "Błąd systemu"
+ IMAGES_AUTO_FIX_ORIENTATION: "Automatycznie popraw orientację"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Automatycznie poprawia orientację obrazu na podstawie danych Exif"
+ REDIS_SOCKET: "Gniazdo Redis"
+ REDIS_SOCKET_HELP: "Gniazdo serwera Redis"
+ NOT_SET: "Nie ustawione"
+ PERMISSIONS: "Uprawnienia"
+ NEVER_CACHE_TWIG: "Nigdy nie buforuj Twiga"
+ NEVER_CACHE_TWIG_HELP: "Buforuj jedynie treść, przetwarzając szablony Twiga przy każdym ich załadowaniu. Ignoruje ustawienie twig_first."
+ ALLOW_WEBSERVER_GZIP: "Gzip na serwerze"
+ ALLOW_WEBSERVER_GZIP_HELP: "Domyślnie wyłączone. Po włączeniu, Gzip/Deflate po stronie serwera będzie działać, ale połączenie HTTP nie będzie zamykane przed wykonaniem komendy onShutDown(), co spowolni ładowanie stron"
+ OFFLINE_WARNING: "Nie można nawiązać połączenia z GPM"
+ CLEAR_IMAGES_BY_DEFAULT: "Wyczyść pamięć podręczną obrazów (opcja domyślna)"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Domyślnie przetworzone obrazy są usuwane podczas opróżniania pamięci podręcznej, można to wyłączyć"
+ CLI_COMPATIBILITY: "Kompatybilność z CLI"
+ CLI_COMPATIBILITY_HELP: "Gwarantuje użycie jedynie nieulotnych sterowników pamięci podręcznej (file, redis, memcache itp.)"
+ REINSTALL_PLUGIN: "Zreinstaluj wtyczkę"
+ REINSTALL_THEME: "Zreinstaluj motyw"
+ REINSTALL_THE: "Zreinstaluj %s"
+ CONFIRM_REINSTALL: "Czy na pewno chcesz zreinstalować ten %s?"
+ REINSTALLED_SUCCESSFULLY: "pomyślnie zreinstalowano %s"
+ ERROR_REINSTALLING_THE: "Wystąpił błąd podczas reinstalacji %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Pomyślnie zreinstalowano pakiet %s"
+ REINSTALLATION_FAILED: "Reinstalacja nie powiodła się"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "Zainstalowana wersja nie jest najnowszym wydaniem. Klikając \"Kontynuuj\", aby usunąć obecną wersję i zainstalować najnowsze dostępne wydanie"
+ TOOLS: "Narzędzia"
+ DIRECT_INSTALL: "Bezpośrednia instalacja"
+ NO_PACKAGE_NAME: "Nie określono nazwy pakietu"
+ PACKAGE_EXTRACTION_FAILED: "Wypakowywanie pakietu się nie powiodło"
+ NOT_VALID_GRAV_PACKAGE: "Paczka nie jest prawidłowym pakietem Grav"
+ NAME_COULD_NOT_BE_DETERMINED: "Nie można określić nazwy"
+ CANNOT_OVERWRITE_SYMLINKS: "Nie można zastąpić dowiązania symbolicznego"
+ ZIP_PACKAGE_NOT_FOUND: "Nie można odnaleźć pakietu ZIP"
+ GPM_OFFICIAL_ONLY: "Tylko oficjalne GPM"
+ GPM_OFFICIAL_ONLY_HELP: "Zezwalaj na bezpośrednie instalacje jedynie z oficjalnego repozytorium GPM."
+ SORTABLE_PAGES: "Sortowalne strony:"
+ ADMIN_SPECIFIC_OVERRIDES: "Nadpisania panelu admina"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Kolejność wyświetlania dzieci"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Kolejność, w której dzieci tej strony będą wyświetlane w widoku stron panelu admina"
+ PWD_PLACEHOLDER: "złożony ciąg o długości co najmniej 8 znaków"
+ PWD_REGEX: "Wyrażenie regularne haseł użytkownika"
+ PWD_REGEX_HELP: "Domyślnie: hasło musi zawierać co najmniej jedną cyfrę, jedną wielką i jedną małą literę, a także mieć co najmniej 8 znaków długości"
+ USERNAME_PLACEHOLDER: "tylko małe litery, np. 'admin'"
+ USERNAME_REGEX: "Wyrażenie regularne nazw użytkownika"
+ USERNAME_REGEX_HELP: "Domyślnie: tylko małe litery, cyfry, myślniki i znaki podkreślenia, 3-16 znaków"
+ CONTENT_PADDING_HELP: "Włącz / wyłącz dopełnianie wokół obszaru zawartości, aby zapewnić więcej miejsca"
+ ENABLE_AUTO_METADATA: "Automatyczne metadane z Exif"
+ ENABLE_AUTO_METADATA_HELP: "Automatycznie generuj pliki metadanych dla obrazów z dołączonym Exif"
+ 2FA_TITLE: "Uwierzytelnienie dwuetapowe"
+ 2FA_INSTRUCTIONS: "##### Uwierzytelnienie dwuetapowe\nMasz na tym koncie włączone **2FA**. Użyj aplikacji od **2FA** i wprowadź aktualny **kod 6-cyfrowy**, aby zakończyć proces logowania."
+ 2FA_LABEL: "Dostęp administratora"
+ 2FA_FAILED: "Nieprawidłowy kod uwierzytelnienia dwuetapowego, proszę spróbować ponownie..."
+ 2FA_ENABLED: "2FA włączone"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "Sekret 2FA"
+ 2FA_REGENERATE: "Zregeneruj"
+ FORCE_LOWERCASE_URLS: "Wymuś URL małymi literami"
+ VIEW_SITE_TIP: "Wyświetl stronę"
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Prześlij i zainstaluj"
diff --git a/user/plugins/admin/languages/pt.yaml b/user/plugins/admin/languages/pt.yaml
new file mode 100644
index 0000000..51ca69e
--- /dev/null
+++ b/user/plugins/admin/languages/pt.yaml
@@ -0,0 +1,552 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Esta é uma versão Beta! Use por sua conta em risco..."
+ ADMIN_REPORT_ISSUE: "Um problema foi encontrado? Por favor, reporte no GitHub."
+ EMAIL_FOOTER: "Motorizado por Grav - CMS Flat File Moderno e Simples"
+ LOGIN_BTN: "Entrar"
+ LOGIN_BTN_FORGOT: "Esqueceu"
+ LOGIN_BTN_RESET: "Reset a senha"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Envie as instruções para resetar a senha"
+ LOGIN_BTN_CLEAR: "Limpar Envio"
+ LOGIN_BTN_CREATE_USER: "Criar Usuário"
+ LOGIN_LOGGED_IN: "Conectado com sucesso"
+ LOGIN_FAILED: "Falha ao logar"
+ LOGGED_OUT: "Você foi desconectado"
+ RESET_NEW_PASSWORD: "Por favor insira um novo senha …"
+ RESET_LINK_EXPIRED: "Link de reset expirado, por favor, tente novamente"
+ RESET_PASSWORD_RESET: "Senha foi redefinida"
+ RESET_INVALID_LINK: "Reset de link usado inválido, por favor tente novamente"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Instruções do reset da senha foi enviado por e-mail para %s"
+ FORGOT_FAILED_TO_EMAIL: "As instruções de email falhou ao ser enviada, tente novamente"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "A senha não pode ser resetada para o endereço de email %s"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "O usuário com login %s não existe"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Senha não pode ser modificada. Este site não foi configurado para enviar emails"
+ FORGOT_EMAIL_SUBJECT: "%s Pedido de reset de senha"
+ FORGOT_EMAIL_BODY: "
Senha Restabelecida
Caro %1$s,
Um pedido foi feito em%4$s pra restabelecer a sua senha.
Alternativamente, copia o seguinte URL na barra de endereços do seu navegador:
%2$s
Atenciosamente,
%3$s
"
+ MANAGE_PAGES: "Gerenciar Páginas"
+ CONFIGURATION: "Configuração"
+ PAGES: "Páginas"
+ PLUGINS: "Extensões"
+ PLUGIN: "Extensão"
+ THEMES: "Temas"
+ LOGOUT: "Sair"
+ BACK: "Voltar"
+ NEXT: "Próximo"
+ PREVIOUS: "Anterior"
+ ADD_PAGE: "Adicionar Página"
+ ADD_MODULAR: "Adicionar Módulo"
+ MOVE: "Mover"
+ DELETE: "Apagar"
+ VIEW: "Visualizar"
+ SAVE: "Gravar"
+ NORMAL: "Normais"
+ EXPERT: "Esperto"
+ EXPAND_ALL: "Expandir Tudo"
+ COLLAPSE_ALL: "Recolher Tudo"
+ SECURE_DELETE_DESC: "Digite DELETE e confirme"
+ ERROR: "Erro"
+ CLOSE: "Fechar"
+ CANCEL: "Cancelar"
+ CONTINUE: "Continuar"
+ CONFIRM: "Confirmar"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Confirmação Requerida"
+ MODAL_CHANGED_DETECTED_TITLE: "Alterações Detectadas"
+ MODAL_CHANGED_DETECTED_DESC: "Você tem alterações não salvas. Tem certeza que deseja sair sem salvar?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Confirmação Requerida"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Tem a certeza de que pretende apagar o arquivo? Esta ação não pode ser desfeita."
+ ADD_FILTERS: "Adicionar Filtros"
+ SEARCH_PAGES: "Buscar Páginas"
+ VERSION: "Versão"
+ WAS_MADE_WITH: "Foi criado com"
+ BY: "Por"
+ UPDATE_THEME: "Atualizar Tema"
+ UPDATE_PLUGIN: "Atualizar Extensões"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "de este tema já está disponível"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "de este extensões já está disponível"
+ AUTHOR: "Autor"
+ HOMEPAGE: "Página Inicial"
+ DEMO: "Demo"
+ BUG_TRACKER: "Rastreador de erro"
+ KEYWORDS: "Palavras-chave"
+ LICENSE: "Licença"
+ DESCRIPTION: "Descrição"
+ README: "Leia me"
+ REMOVE_THEME: "Apagar Tema"
+ INSTALL_THEME: "Instalar Tema"
+ THEME: "Tema"
+ BACK_TO_THEMES: "Voltar a Temas"
+ BACK_TO_PLUGINS: "Voltar a Extensões"
+ CHECK_FOR_UPDATES: "Verificar Atualizações"
+ ADD: "Adicionar"
+ CLEAR_CACHE: "Limpar Cache"
+ CLEAR_CACHE_ALL_CACHE: "Todo o Cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Somente Ativos"
+ CLEAR_CACHE_IMAGES_ONLY: "Apenas Imagens"
+ CLEAR_CACHE_CACHE_ONLY: "Apenas o Cache"
+ CLEAR_CACHE_TMP_ONLY: "Tmp somente"
+ DASHBOARD: "Painel"
+ UPDATES_AVAILABLE: "Atualização disponível"
+ DAYS: "Dias"
+ UPDATE: "Atualizar"
+ BACKUP: "Backup"
+ BACKUPS: "Cópias de segurança"
+ BACKUP_NOW: "Realizar Backup Agora"
+ BACKUPS_STATS: "Estatísticas de backup"
+ BACKUPS_HISTORY: "Histórico de backup"
+ BACKUPS_PROFILES: "Perfis de backup"
+ BACKUPS_COUNT: "Número de Cópias de Segurança"
+ BACKUPS_PROFILES_COUNT: "Número de Perfis"
+ BACKUPS_TOTAL_SIZE: "Espaço Usado"
+ BACKUPS_NEWEST: "Cópia de Segurança Mais Recente"
+ BACKUPS_OLDEST: "Cópia de Segurança Mais Antiga"
+ BACKUPS_PURGE: "Limpar"
+ BACKUPS_NOT_GENERATED: "Nenhuma cópia de segurança foi gerada ainda..."
+ BACKUPS_PURGE_NUMBER: "Usando %s de %s espaços de backup"
+ BACKUPS_PURGE_TIME: "%s dias de backups restantes"
+ BACKUPS_PURGE_SPACE: "Usando %s de %s"
+ BACKUP_DELETED: "Cópia de Segurança Apagada Com Sucesso"
+ BACKUP_NOT_FOUND: "Cópia de Segurança Não Encontrada"
+ BACKUP_DATE: "Data da Cópia de Segurança"
+ STATISTICS: "Estatísticas"
+ TODAY: "Hoje"
+ WEEK: "Semana"
+ MONTH: "Mês"
+ LATEST_PAGE_UPDATES: "Atualizações de pagina mais recente"
+ MAINTENANCE: "Manutenção"
+ UPDATED: "Atualizada"
+ MON: "Seg"
+ TUE: "Ter"
+ WED: "Qua"
+ THU: "Qui"
+ FRI: "Sex"
+ SAT: "Sáb"
+ SUN: "Dom"
+ COPY: "Copiar"
+ EDIT: "Editar"
+ CREATE: "Criar"
+ GRAV_ADMIN: "Grav Admin"
+ GRAV_OFFICIAL_PLUGIN: "Extensões Oficial do Grav"
+ GRAV_OFFICIAL_THEME: "Temas Oficial do Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Este plugin está ligado simbolicamente. As atualizações não serão detectadas."
+ THEME_SYMBOLICALLY_LINKED: "Este tema está ligado simbolicamente. As atualizações não serão detectadas"
+ REMOVE_PLUGIN: "Apagar Extensões"
+ INSTALL_PLUGIN: "Instalar Extensões"
+ AVAILABLE: "Disponíveis"
+ INSTALLED: "Instalado"
+ INSTALL: "Instalar"
+ ACTIVE_THEME: "Tema Ativo"
+ SWITCHING_TO: "Mudando pra"
+ SWITCHING_TO_DESCRIPTION: "Ao mudar para um tema diferente, não há garantia de que todas as páginas de layout são suportadas, podendo causar erros ao tentar carregar as páginas."
+ SWITCHING_TO_CONFIRMATION: "Gostaria de continuar mudando o tema"
+ CREATE_NEW_USER: "Criar Novo Usuário"
+ REMOVE_USER: "Apagar Usuários"
+ ACCESS_DENIED: "Acesso rejeitado"
+ ACCOUNT_NOT_ADMIN: "sua conta não tem direitos administrativas"
+ PHP_INFO: "Info do PHP"
+ INSTALLER: "Instalador"
+ AVAILABLE_THEMES: "Temas Disponíveis"
+ AVAILABLE_PLUGINS: "Extensões Disponíveis"
+ INSTALLED_THEMES: "Temas Instalados"
+ INSTALLED_PLUGINS: "Extensões Instalado"
+ BROWSE_ERROR_LOGS: "Navegue registros de erro"
+ SITE: "Site"
+ INFO: "Info"
+ SYSTEM: "Sistema"
+ USER: "Usuário"
+ ADD_ACCOUNT: "Adicionar Conta"
+ SWITCH_LANGUAGE: "Mude de linguagem"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Plugin habilitado com sucesso"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Plugin desabilitado com sucesso"
+ SUCCESSFULLY_CHANGED_THEME: "Tema padrão mudado com sucesso"
+ INSTALLATION_FAILED: "Instalação falhou"
+ INSTALLATION_SUCCESSFUL: "Instalação Sucesso"
+ UNINSTALL_FAILED: "Falha ao desinstalar"
+ UNINSTALL_SUCCESSFUL: "Desinstalação sucedida"
+ SUCCESSFULLY_SAVED: "Salvo com sucesso"
+ SUCCESSFULLY_COPIED: "Copia com sucedida"
+ REORDERING_WAS_SUCCESSFUL: "Reordenação foi um sucesso"
+ SUCCESSFULLY_DELETED: "Exclusão Bem-sucedida"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Mudança de linguagem sucedida"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Você não tem as permissões suficientes para cumprir a tarefa"
+ CACHE_CLEARED: "Cache apagado"
+ METHOD: "Método"
+ ERROR_CLEARING_CACHE: "Erro ao limpar cache"
+ AN_ERROR_OCCURRED: "Ocorreu um erro"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Seu backup está pronto para ser abaixado"
+ DOWNLOAD_BACKUP: "Baixar backup"
+ PAGES_FILTERED: "Paginas filtradas"
+ NO_PAGE_FOUND: "Nenhuma página encontrada"
+ INVALID_PARAMETERS: "Parâmetros inválidos"
+ NO_FILES_SENT: "Nenhum arquivo foi enviado"
+ EXCEEDED_FILESIZE_LIMIT: "Excedeu o limite de tamanho de arquivo de configuração do PHP"
+ UNKNOWN_ERRORS: "Erro desconhecido"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Excedeu o limite de tamanho de arquivo de configuração do Grav"
+ UNSUPPORTED_FILE_TYPE: "Este tipo de arquivo não é apoiado"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Falha ao mover o arquivo carregado."
+ FILE_UPLOADED_SUCCESSFULLY: "Arquivo carregado com sucesso"
+ FILE_DELETED: "Arquivo excluído"
+ FILE_COULD_NOT_BE_DELETED: "O arquivo não pôde ser excluído"
+ FILE_NOT_FOUND: "O arquivo não foi encontrado"
+ NO_FILE_FOUND: "Nenhum arquivo encontrado"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav foi atualizado com sucesso para"
+ GRAV_UPDATE_FAILED: "Atualização de Grav falhou"
+ EVERYTHING_UPDATED: "Tudo atualizado"
+ UPDATES_FAILED: "Falha na atualização"
+ AVATAR_BY: "Avatar por"
+ AVATAR_UPLOAD_OWN: "Ou carregue o seu próprio arquivo..."
+ LAST_BACKUP: "Último Backup"
+ FULL_NAME: "Nome Completo"
+ USERNAME: "Nome de Usuário"
+ EMAIL: "Email"
+ USERNAME_EMAIL: "Nome de usuário ou E-mail"
+ PASSWORD: "Senha"
+ PASSWORD_CONFIRM: "Confirme sua senha"
+ TITLE: "Título"
+ LANGUAGE: "Idioma"
+ ACCOUNT: "Conta"
+ EMAIL_VALIDATION_MESSAGE: "Precisa estar um endereço de email válido"
+ PASSWORD_VALIDATION_MESSAGE: "Senha deveria conter pelo menos um número e uma carta maiúscula e minúscula, e pelo menos 8 ou mais caracteres"
+ LANGUAGE_HELP: "Definir o idioma preferido"
+ MEDIA: "Midia"
+ DEFAULTS: "Padrãos"
+ SITE_TITLE: "Título do Site"
+ SITE_TITLE_PLACEHOLDER: "Título do site geral"
+ SITE_TITLE_HELP: "Título padrão para o seu site, muitas vezes usado em temas"
+ SITE_DEFAULT_LANG: "Idioma padrão"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Idioma padrão para ser utilizado pelo tema "
+ SITE_DEFAULT_LANG_HELP: "Idioma padrão para ser utilizado pelo tema "
+ DEFAULT_AUTHOR: "Autor de Padrão"
+ DEFAULT_AUTHOR_HELP: "Um nome de autor padrão, frequentemente usado em temas ou no conteúdo da página"
+ DEFAULT_EMAIL: "Email Padrão"
+ DEFAULT_EMAIL_HELP: "Um email padrão para referência em temas ou páginas"
+ TAXONOMY_TYPES: "Tipos de Taxonomia"
+ TAXONOMY_TYPES_HELP: "Tipos de taxonomia tem que ser definidos aqui se você deseja usar-os em páginas"
+ PAGE_SUMMARY: "Resumo de Página"
+ ENABLED: "Habilitado"
+ ENABLED_HELP: "Habilitar resumo de página (Resumo retorna o mesmo que o conteúdo da página)"
+ 'YES': "Sim"
+ 'NO': "Não"
+ SUMMARY_SIZE: "Tamanho do Resumo"
+ SUMMARY_SIZE_HELP: "A quantidade de caracteres de uma página para usar como um resumo do conteúdo"
+ FORMAT: "Formato"
+ FORMAT_HELP: "resumo = determinado pelo primeiro delimitador utilizado ou tamanho do texto; longo = o delimitador do resumo será ignorado"
+ SHORT: "Curto"
+ LONG: "Longo"
+ DELIMITER: "Delimitador"
+ DELIMITER_HELP: "O delimitador de resumo (padrão ' === ')"
+ METADATA: "Metadado"
+ METADATA_HELP: "Valores de metadados padrão que serão exibidos em cada página com exceção dos que são substituída pela página"
+ NAME: "Nome"
+ CONTENT: "Conteúdo"
+ SIZE: "Tamanho"
+ ACTION: "Ação"
+ REDIRECTS_AND_ROUTES: "Redirecionamentos e Rotas"
+ CUSTOM_REDIRECTS: "Redirecionamentos personalizados"
+ CUSTOM_REDIRECTS_HELP: "routes para redirecionar para outras páginas. Substituição de Regex padrão é válida"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/seu/pseudônimo"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/seu/redirecionamento"
+ CUSTOM_ROUTES: "Routes personalizados"
+ CUSTOM_ROUTES_HELP: "routes para redirecionar para outras páginas. Substituição de Regex padrão é válida"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/seu/pseudônimo"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/seu/route/"
+ FILE_STREAMS: "Fluxos de arquivo"
+ DEFAULT: "Padrão"
+ PAGE_MEDIA: "Mídia de Página"
+ OPTIONS: "Opções"
+ PUBLISHED: "Publicado"
+ PUBLISHED_HELP: "Por padrão, uma página é publicada a menos que você explicitamente defini published: false ou através de um publish_date no futuro ou unpublish_date no passado"
+ DATE: "Data"
+ DATE_HELP: "O variável de Data permite definir especificamente uma data associada a esta página."
+ PUBLISHED_DATE: "Data de publicação"
+ PUBLISHED_DATE_HELP: "Pode prover uma data para acionar a publicação automaticamente."
+ UNPUBLISHED_DATE: "Data que foi despublicado"
+ UNPUBLISHED_DATE_HELP: "Pode prover uma data para acionar a des-publicação automaticamente."
+ ROBOTS: "Robôs"
+ TAXONOMIES: "Taxonomias"
+ TAXONOMY: "Taxonomia"
+ ADVANCED: "Avançado"
+ SETTINGS: "Preferências"
+ FOLDER_NUMERIC_PREFIX: "Prefixo numérico de pasta"
+ FOLDER_NUMERIC_PREFIX_HELP: "Prefixo numérico que fornece ordenação manual e implica visibilidade"
+ FOLDER_NAME: "Nome de Pasta"
+ FOLDER_NAME_HELP: "O nome da pasta que será armazenado no sistema de arquivos para esta página"
+ PARENT: "Mãe"
+ DEFAULT_OPTION_ROOT: "-Raiz-"
+ DEFAULT_OPTION_SELECT: "- Selecionar -"
+ DISPLAY_TEMPLATE: "Modelo de exibição"
+ DISPLAY_TEMPLATE_HELP: "O tipo de página que traduz em qual modelo Twig processa a página"
+ BODY_CLASSES: "Classes do corpo"
+ ORDERING: "Ordenação"
+ PAGE_ORDER: "Ordem da Página"
+ OVERRIDES: "Substituições"
+ MENU: "Menu"
+ MENU_HELP: "A sequência de caracteres para ser usado em um menu. Se não for definido, o título será usado."
+ SLUG: "Curto"
+ SLUG_HELP: "A variável do slug permite você definir especificamente a parte da página da URL"
+ SLUG_VALIDATE_MESSAGE: "Um slug deve cotener apenas cartas minúsculas, números, e traços"
+ PROCESS: "Processo"
+ PROCESS_HELP: "Controle como as páginas são processadas. Pode ser definido por página em vez de globalmente"
+ DEFAULT_CHILD_TYPE: "Tipo de criança padrão"
+ USE_GLOBAL: "Utilizar Globalmente"
+ ROUTABLE: "Roteável"
+ ROUTABLE_HELP: "Se esta página é acessível através de uma URL"
+ CACHING: "Armazenamento em cache"
+ VISIBLE: "Visível"
+ VISIBLE_HELP: "Determina se uma página é visível na navegação."
+ DISABLED: "Indisponível"
+ ITEMS: "Itens"
+ ORDER_BY: "Ordenar por"
+ ORDER: "Ordem"
+ FOLDER: "Pasta"
+ ASCENDING: "Crescente"
+ DESCENDING: "Decrescente"
+ ADD_MODULAR_CONTENT: "Adicionar conteúdo Modular"
+ PAGE_TITLE: "Título da Página"
+ PAGE_TITLE_HELP: "O Título da Página"
+ PAGE: "Página"
+ MODULAR_TEMPLATE: "Template modular"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Nome de Arquivo"
+ PARENT_PAGE: "Página Mãe"
+ HOME_PAGE: "Página Inicial"
+ HOME_PAGE_HELP: "A página que Grav usará como a página inicial padrão"
+ DEFAULT_THEME: "Tema Padrão"
+ DEFAULT_THEME_HELP: "Definir o tema padrão para Grav usar (o padrão é Antimatter)"
+ TIMEZONE: "Fuso Horário"
+ TIMEZONE_HELP: "Substituir o padrão de fuso horário do servidor"
+ SHORT_DATE_FORMAT: "Formato de exposição de data curta"
+ SHORT_DATE_FORMAT_HELP: "Definir o formato de data curta que pode ser usado por temas"
+ LONG_DATE_FORMAT: "Formato de exposição de data longa"
+ LONG_DATE_FORMAT_HELP: "Definir o formato de data longa que pode ser usado por temas"
+ DEFAULT_ORDERING: "Padrão de ordenação"
+ DEFAULT_ORDERING_HELP: "Páginas em uma lista processará usando esta ordem, a menos que ele seja substituída"
+ DEFAULT_ORDERING_DEFAULT: "Padrão - baseado no nome da pasta"
+ DEFAULT_ORDERING_FOLDER: "Pasta - baseado no nome da pasta, menos o prefixo"
+ DEFAULT_ORDERING_TITLE: "Título - baseado no campo de título no cabeçalho"
+ DEFAULT_ORDERING_DATE: "Data - baseado no campo de data no cabeçalho"
+ DEFAULT_ORDER_DIRECTION: "Direção de ordem padrão"
+ DEFAULT_ORDER_DIRECTION_HELP: "A direção de páginas em uma lista"
+ DEFAULT_PAGE_COUNT: "Contagem de página padrão"
+ DEFAULT_PAGE_COUNT_HELP: "Padrão - Máximo numero de páginas em uma lista"
+ DATE_BASED_PUBLISHING: "Publicação baseada na data"
+ DATE_BASED_PUBLISHING_HELP: "Automaticamente publicar ou des-publicar postagens baseado na sua data"
+ EVENTS: "Eventos"
+ EVENTS_HELP: "Habilitar ou desabilitar a eventos específicos. Desabilitar estes eventos pode quebrar plugins"
+ REDIRECT_DEFAULT_ROUTE: "Redirecionar a route padrão"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Automaticamente redirecionar para o route padrão de uma página"
+ LANGUAGES: "Linguagens"
+ SUPPORTED: "Apoiado"
+ SUPPORTED_HELP: "Lista separada por vírgulas de 2 letras para cada código de linguagem (por exemplo ' en, fr, de')"
+ TRANSLATIONS_ENABLED: "Traduções habilitadas"
+ TRANSLATIONS_ENABLED_HELP: "Suporte a traduções em Grav, plugins e extensões"
+ TRANSLATIONS_FALLBACK: "Reverter tradução"
+ TRANSLATIONS_FALLBACK_HELP: "Recuar através de traduções suportadas se idioma ativo não existir"
+ ACTIVE_LANGUAGE_IN_SESSION: "Idioma ativo na sessão"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Armazenar o idioma ativo na sessão"
+ HTTP_HEADERS: "Cabeçalhos HTTP"
+ EXPIRES: "Expira em"
+ EXPIRES_HELP: "Define o cabeçalho de expiração. O valor é em segundos."
+ CACHE_CONTROL: "HTTP Cache-Control"
+ CACHE_CONTROL_HELP: "Defina para um valor de controle de cache válido, como `no-cache, no-store, must-revalidate`"
+ LAST_MODIFIED: "Última Modificação"
+ LAST_MODIFIED_HELP: "Define o último cabeçalho modificado que pode ajudar a otimizar o proxy e cache do navegador"
+ ETAG: "ETag"
+ ETAG_HELP: "Define o cabeçalho etag para ajudar a identificar quando uma página foi modificada"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Define o cabeçalho 'Vary: Accept Encoding' para ajudar com proxy e cache de CDN"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Markdown extra"
+ MARKDOWN_EXTRA_HELP: "Habilitar o suporte a padrão Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Escape elementos HTML em vedações extras de markdown"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Escape elementos HTML em vedações extras de markdown"
+ AUTO_LINE_BREAKS: "Quebras de linha automática"
+ AUTO_LINE_BREAKS_HELP: "Habilitar o suporte para quebra de linha automática em markdown"
+ AUTO_URL_LINKS: "Links de URL automatico"
+ AUTO_URL_LINKS_HELP: "Habilitar a conversão automática de URLs em hiperlinks HTML"
+ ESCAPE_MARKUP: "Escapar marcação"
+ ESCAPE_MARKUP_HELP: "Escapar tags de marcação em entidades HTML"
+ CACHING_HELP: "Chave LIGA/DESLIGA global para habilitar/desabilitar cache de Grav"
+ CACHE_CHECK_METHOD: "Método de verificação de cache"
+ CACHE_CHECK_METHOD_HELP: "Selecione o método que Grav usa para verificar se os arquivos de página foram modificados."
+ CACHE_DRIVER: "Driver de Cache"
+ CACHE_DRIVER_HELP: "Escolha qual controlador de cache Grav deve usar. 'Auto detectar' tenta encontrar o melhor para você"
+ CACHE_PREFIX: "Prefixo de cache"
+ CACHE_PREFIX_HELP: "Um identificador para parte da chave Grav. Não mude a menos que você saiba o que faz."
+ CACHE_PREFIX_PLACEHOLDER: "Derivado da URL base (substituir por entrada aleatória)"
+ CACHE_PURGE: "Limpar cache obsoleto"
+ LIFETIME: "Duração"
+ LIFETIME_HELP: "Define o tempo de vida do cache em segundos. 0 = infinito"
+ GZIP_COMPRESSION: "Compactação Gzip"
+ GZIP_COMPRESSION_HELP: "Habilite a compactação GZip da página Grav para aumentar o desempenho."
+ TWIG_TEMPLATING: "Template Twig"
+ TWIG_CACHING: "Cache de Twig"
+ TWIG_CACHING_HELP: "Controla o mecanismo de cache do Twig. Deixe habilitado para melhor desempenho."
+ TWIG_DEBUG: "Depurar Twig"
+ TWIG_DEBUG_HELP: "Permite a opção de não carregar a extensão do depurador Twig"
+ DETECT_CHANGES: "Detectar alterações"
+ DETECT_CHANGES_HELP: "Twig irá recompilar automaticamente o cacheTwig se detectar qualquer alteração no Template Twig"
+ AUTOESCAPE_VARIABLES: "Escapa automática variáveis"
+ AUTOESCAPE_VARIABLES_HELP: "Escapa automática todas as variáveis. Isso provavelmente quebrará seu site"
+ ASSETS: "Recursos"
+ CSS_PIPELINE: "CSS pipeline"
+ CSS_PIPELINE_HELP: "CSS pipeline é a unificação de múltiplos recursos CSS em um único arquivo"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Incluir externos em CSS pipeline"
+ CSS_MINIFY: "Minificar CSS"
+ CSS_REWRITE: "Reescrever CSS"
+ JAVASCRIPT_MINIFY: "Minificar JavaScript"
+ COLLECTIONS: "Coleções"
+ ERROR_HANDLER: "Processamento de Erros"
+ DISPLAY_ERRORS: "Erros de exibição"
+ DISPLAY_ERRORS_HELP: "Exibir página de erro com log completo"
+ LOG_ERRORS: "Log de erros"
+ DEBUGGER: "Depurador"
+ DEBUG_TWIG: "Depurar Twig"
+ DEFAULT_IMAGE_QUALITY: "Qualidade de imagem padrão"
+ CACHE_ALL: "Todas as imagens em cache"
+ UPLOAD_LIMIT: "Limite de upload de arquivo"
+ UPLOAD_LIMIT_HELP: "Definir o tamanho máximo de upload em bytes (0 é ilimitado)"
+ ENABLE_MEDIA_TIMESTAMP: "Habilitar os carimbos de hora na mídia"
+ SESSION: "Sessão"
+ TIMEOUT: "Tempo limite esgotado"
+ TIMEOUT_HELP: "Define o tempo limite da sessão em segundos"
+ ABSOLUTE_URLS: "URL absoluto"
+ PARAMETER_SEPARATOR: "Separador de parâmetro"
+ TASK_COMPLETED: "Tarefas concluídas"
+ EVERYTHING_UP_TO_DATE: "Está tudo atualizado"
+ UPDATES_ARE_AVAILABLE: "atualizações estão disponíveis"
+ IS_AVAILABLE_FOR_UPDATE: "está disponível para atualização"
+ IS_NOW_AVAILABLE: "já está disponível"
+ CURRENT: "Atual"
+ UPDATE_GRAV_NOW: "Atualizar Grav Agora"
+ GRAV_SYMBOLICALLY_LINKED: "Grav é simbolicamente ligada. Atualização não estará disponível"
+ UPDATING_PLEASE_WAIT: "Atualizando... por favor aguarde, abaixando"
+ OF_THIS: "isto"
+ OF_YOUR: "de seu"
+ HAVE_AN_UPDATE_AVAILABLE: "tem uma atualização disponível"
+ SAVE_AS: "Gravar como"
+ AND: "e"
+ UPDATE_AVAILABLE: "Atualização disponível"
+ METADATA_KEY: "Chave (por exemplo, ' Palavra Chave')"
+ METADATA_VALUE: "Valor (e.g. 'Blog, Grav')"
+ USERNAME_HELP: "Nome de usuário deve situar-se entre 3 e 16 caracteres, incluindo letras minúsculas, números, sublinhados, e hífens. Letras maiúsculas, espaços e caracteres especiais, não são permitidos"
+ FULLY_UPDATED: "Totalmente Atualizado"
+ SAVE_LOCATION: "Gravado às"
+ PAGE_FILE: "Template Página"
+ NO_USER_ACCOUNTS: "As contas de usuário não foram encontradas, por favor crie uma primeiro..."
+ REDIRECT_TRAILING_SLASH: "Redirecionar a barra à direita"
+ DEFAULT_DATE_FORMAT: "Formato de data de página"
+ DEFAULT_DATE_FORMAT_HELP: "Formato de data de página usado pelo Grav. Por padrão, Grav tenta de adivinhar a seu formato de data, mas tambem você pode especificar um formato usando a sintaxe de data do PHP (por exemplo: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Adivinha automaticamente"
+ IGNORE_FILES: "Ignorar arquivos"
+ IGNORE_FILES_HELP: "Arquivos específicos para ignorar quando estiver processando as páginas"
+ IGNORE_FOLDERS: "Ignorar as pastas"
+ IGNORE_FOLDERS_HELP: "Pastas específicas para ignorar quando estiver processando as páginas"
+ HIDE_EMPTY_FOLDERS: "Ocultar pastas vazias"
+ HTTP_ACCEPT_LANGUAGE: "Definir idioma pelo navegador"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Você pode optar para tentar definir o idioma com base em tag de cabeçalho 'http_accept_language' no navegador"
+ OVERRIDE_LOCALE: "Substituir a localidade"
+ OVERRIDE_LOCALE_HELP: "Substituir a configuração de localidade em PHP baseado na linguagem atual"
+ REDIRECT: "Redirecionamento de página"
+ PLUGIN_STATUS: "Estado do Extensões"
+ INCLUDE_DEFAULT_LANG: "Incluir o idioma padrão"
+ INCLUDE_DEFAULT_LANG_HELP: "Isto irá preceder todas os URLs na língua padrão com o idioma padrão. por exemplo, `/en/blog/my-post`"
+ ALLOW_URL_TAXONOMY_FILTERS: "Filtros de taxonomia de URL"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Coleções baseado em página permitem que você filtre através de ` /taxonomia: valor `."
+ REDIRECT_DEFAULT_CODE: "Código de redirecionamento padrão"
+ REDIRECT_DEFAULT_CODE_HELP: "O código de status de HTTP para usar para redirecionamentos"
+ IGNORE_HIDDEN: "Ignorar escondidos"
+ IGNORE_HIDDEN_HELP: "Ignorar todos os arquivos e pastas que começam com um ponto"
+ WRAPPED_SITE: "Site embrulhado"
+ WRAPPED_SITE_HELP: "Para os temas/plugins saber se Grav é embrulhado por outra plataforma"
+ APPEND_URL_EXT: "Acrescentar a extensão de URL"
+ PAGE_MODES: "Modos de página"
+ PAGE_TYPES: "Tipos de Página"
+ ACCESS_LEVELS: "Níveis de acesso"
+ GROUPS: "Grupos"
+ GROUPS_HELP: "Lista de grupos de qual o usuário faz parte"
+ ADMIN_ACCESS: "Acesso de Administrador"
+ SITE_ACCESS: "Acesso ao Site"
+ INVALID_SECURITY_TOKEN: "Token de segurança inválido"
+ ACTIVATE: "Activar"
+ CACHE_PERMS: "Permissões de cache"
+ REMOVE_SUCCESSFUL: "Remover foi sucedido"
+ REMOVE_FAILED: "Remover Falhou"
+ HIDE_HOME_IN_URLS: "Esconder route da página home em URLs"
+ HIDE_HOME_IN_URLS_HELP: "Assegurará que os routes padrão para todas as páginas de baixo de home não referência o route regular da pagina home"
+ TWIG_FIRST: "Processar Twig Primeiro"
+ TWIG_FIRST_HELP: "Se você tiver habilitado o processamento de página twig, você pode configurar twig a processar antes ou depois do markdown"
+ SESSION_SECURE: "Seguro"
+ SESSION_SECURE_HELP: "Se for verdade, indica que a comunicação para este cookie deve ser sobre uma transmissão encriptada. Aviso: Habilitar isso apenas em sites que são executados exclusivamente em HTTPS"
+ SESSION_HTTPONLY: "Apenas HTTP"
+ SESSION_HTTPONLY_HELP: "Se for verdade, indica que os cookies devem ser usados apenas por HTTP, e modificaçoes feito por JavaScript não é permitido"
+ REVERSE_PROXY: "Proxy reverso"
+ REVERSE_PROXY_HELP: "Habilitar isto se você está atrás de um proxy reverso e você está tendo problemas com URLs contendo portas incorretas"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmatter inválido, não foi possível salvar"
+ ADD_FOLDER: "Adicionar pasta"
+ PROXY_URL: "URL do proxy"
+ PROXY_URL_HELP: "Digite o Host do proxy ou IP e porta"
+ NOTHING_TO_SAVE: "Nada a salvar"
+ ADD_ITEM: "Adicionar iten"
+ INSTALLING: "Instalando"
+ LOADING: "Carregando.."
+ INSTALLING_DEPENDENCIES: "Instalando dependências..."
+ INSTALLING_PACKAGES: "Instalando pacote(s).."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Pacote(s) instalado com sucesso."
+ READY_TO_INSTALL_PACKAGES: "Pronto para instalar pacote(s)"
+ PACKAGES_NOT_INSTALLED: "Pacotes não instalados"
+ PACKAGES_NEED_UPDATE: "Pacotes já instalados, mas muito antigos"
+ REMOVE_THE: "Remova %s"
+ CONFIRM_REMOVAL: "Você tem certeza que deseja apagar esse %s?"
+ REMOVED_SUCCESSFULLY: "%s removido com sucesso"
+ ERROR_REMOVING_THE: "Erro ao remover %s"
+ READY_TO_UPDATE_PACKAGES: "Pronto para atualizar pacote(s)"
+ ERROR_UPDATING_PACKAGES: "Erro ao atualizar pacote(s)"
+ UPDATING_PACKAGES: "Atualizando pacote(s).."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Pacote(s) atualizado com sucesso."
+ UPDATING: "Atualizando"
+ AUTO: "Auto"
+ STABLE: "Estável"
+ TESTING: "Testando"
+ INSERT: "Inserir"
+ UNDO: "Desfazer"
+ REDO: "Refazer"
+ HEADERS: "Cabeçalhos"
+ BOLD: "Negrito"
+ ITALIC: "Itálico"
+ IMAGE: "Imagem"
+ BLOCKQUOTE: "Citação de Bloco"
+ UNORDERED_LIST: "Lista Desordenada"
+ ORDERED_LIST: "Lista Ordenada"
+ EDITOR: "Editor"
+ CHARACTERS: "caracteres"
+ PUBLISHING: "Publicando"
+ TYPE: "Tipo"
+ REDIS_PORT: "Porta do Redis"
+ REDIS_PORT_HELP: "A porta do servidor Redis"
+ REDIS_PASSWORD: "Senha do Redis"
+ ALL: "Tudo"
+ FROM: "de"
+ TO: "para"
+ RELEASE_DATE: "Data de Lançamento"
+ SORT_BY: "Ordenar por"
+ RESOURCE_FILTER: "Filtro..."
+ FORCE_SSL: "Forçar SSL"
+ NEWS_FEED: "Feed de Notícias"
+ EXTERNAL_URL: "URL Externa"
+ SESSION_PATH_HELP: "Use somente se você escolher um URL de base personalizada (você reescreve o domínio / subpasta do site)"
+ CUSTOM_BASE_URL: "URL de base personalizada"
+ DROPZONE_CANCEL_UPLOAD: 'Cancelar Upload'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Tem certeza de que deseja cancelar este upload?'
+ DROPZONE_DEFAULT_MESSAGE: 'Solte seus arquivos aqui ou clique nessa área'
+ DROPZONE_FALLBACK_MESSAGE: 'Seu navegador não suporta upload de arquivos via arrastar e soltar.'
+ DROPZONE_FALLBACK_TEXT: 'Use o formulário de retorno abaixo para fazer o upload de seus arquivos como nos dias mais antigos.'
+ DROPZONE_INVALID_FILE_TYPE: "Você não pode fazer o upload de arquivos desse tipo."
+ DROPZONE_MAX_FILES_EXCEEDED: "Você não pode carregar mais arquivos."
+ DROPZONE_REMOVE_FILE: "Remover arquivo"
+ DROPZONE_RESPONSE_ERROR: "Servidor respondeu com o código {{statusCode}}."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Habilitar Cache Admin"
+ SORTABLE_PAGES: "Páginas Ordenáveis:"
+ 2FA_LABEL: "Acesso Admin"
+ 2FA_REGENERATE: "Regerar"
+ BACKUPS_MAX_COUNT_HELP: "0 é ilimitado"
diff --git a/user/plugins/admin/languages/ro.yaml b/user/plugins/admin/languages/ro.yaml
new file mode 100644
index 0000000..ee2b9dd
--- /dev/null
+++ b/user/plugins/admin/languages/ro.yaml
@@ -0,0 +1,819 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Aceasta este o versiune Beta! Folosiți-o pe propiul risc..."
+ ADMIN_REPORT_ISSUE: "Ați găsit o problemă? Raportați-o pe Github."
+ EMAIL_FOOTER: "Construit cu Grav - CMS modern"
+ LOGIN_BTN: "Logare"
+ LOGIN_BTN_FORGOT: "Ai uitat?"
+ LOGIN_BTN_RESET: "Resetarea parolei"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Trimite instrucţiunile de resetare"
+ LOGIN_BTN_CLEAR: "Șterge datele introduse"
+ LOGIN_BTN_CREATE_USER: "Creează utilizator"
+ LOGIN_LOGGED_IN: "Te-ai conectat cu succes"
+ LOGIN_FAILED: "Conectare nereuşită"
+ LOGGED_OUT: "Ai fost deconectat"
+ RESET_NEW_PASSWORD: "Te rugăm să introduci o parolă nouă …"
+ RESET_LINK_EXPIRED: "Link-ul de resetare a expirat, vă rugăm să încercaţi din nou"
+ RESET_PASSWORD_RESET: "Parola a fost resetată"
+ RESET_INVALID_LINK: "Incorecta a reseta link-ul folosit, vă rugăm să încercaţi din nou, vă rugăm încercați din nou"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Instrucţiunile pentru resetarea parolei au fost trimise prin e-mail la %s"
+ FORGOT_FAILED_TO_EMAIL: "Instrucţiunile nu au putut fi trimise pe e-mail, vă rugăm să încercaţi din nou"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Nu se poate reseta parola pentru %s, nu există o adresă de e-mail setată"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Utilizatorul cu numele de %s nu există"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Nu se poate reseta parola. Acest site nu este configurat pentru a trimite email-uri"
+ FORGOT_EMAIL_SUBJECT: "%s cerere de resetare parolă"
+ FORGOT_EMAIL_BODY: "
Resetare parolă
Dragă %1$s,
Cererea a fost făcută pe data de %4$s pentru a reseta parola.
Alternativ, copiaţi adresa URL în bara de adrese a browser-ului dvs:
%2$s
< br / > Cu respect, < br / > < br / >%3$s
"
+ MANAGE_PAGES: "Gestionare pagini"
+ CONFIGURATION: "Configurație"
+ PAGES: "Pagini"
+ PLUGINS: "Module"
+ PLUGIN: "Modul"
+ THEMES: "Teme"
+ LOGOUT: "Deconectare"
+ BACK: "Înapoi"
+ NEXT: "Următorul"
+ PREVIOUS: "Anteriorul"
+ ADD_PAGE: "Adaugă pagină"
+ ADD_MODULAR: "Adaugă modulare"
+ MOVE: "Mută"
+ DELETE: "Sterge"
+ UNSET: "Nefixat"
+ VIEW: "Vizualizaţi"
+ SAVE: "Salvează"
+ NORMAL: "Normal"
+ EXPERT: "Expert"
+ EXPAND_ALL: "Extinde tot"
+ COLLAPSE_ALL: "Restrânge toate"
+ ERROR: "Eroare"
+ CLOSE: "Închide"
+ CANCEL: "Anulează"
+ CONTINUE: "Continuare"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Confirmare necesară"
+ MODAL_CHANGED_DETECTED_TITLE: "Modificări detectate"
+ MODAL_CHANGED_DETECTED_DESC: "Există modificări nesalvate. Sunteţi sigur că doriţi să părăsiți pagina fără salvare?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Confirmare necesară"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Sunteţi sigur că doriţi să ştergeţi acest fişier? Această acţiune nu poate fi modificată ulterior."
+ ADD_FILTERS: "Adaugă filtre"
+ SEARCH_PAGES: "Căutaţi pagini"
+ VERSION: "Versiune"
+ WAS_MADE_WITH: "A fost creat cu"
+ BY: "De"
+ UPDATE_THEME: "Actualizare temă"
+ UPDATE_PLUGIN: "Actualizare Modul"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "a acestei teme este disponibilă"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "a acestui modul este disponibilă"
+ AUTHOR: "Autor"
+ HOMEPAGE: "Pagina de start"
+ DEMO: "Demonstraţie"
+ BUG_TRACKER: "Sistemul de urmărire a defecțiunilor"
+ KEYWORDS: "Cuvinte cheie"
+ LICENSE: "Licenţă"
+ DESCRIPTION: "Descriere"
+ README: "Citește-mă"
+ REMOVE_THEME: "Eliminaţi tema"
+ INSTALL_THEME: "Instalează tema"
+ THEME: "Temă"
+ BACK_TO_THEMES: "Înapoi la teme"
+ BACK_TO_PLUGINS: "Înapoi la module"
+ CHECK_FOR_UPDATES: "Caută Actualizări"
+ ADD: "Adăugaţi"
+ CLEAR_CACHE: "Golește memoria cache"
+ CLEAR_CACHE_ALL_CACHE: "Toate elementele din memoria cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Doar activele"
+ CLEAR_CACHE_IMAGES_ONLY: "Doar imaginile"
+ CLEAR_CACHE_CACHE_ONLY: "Doar memoria cache"
+ CLEAR_CACHE_TMP_ONLY: "Doar Tmp"
+ DASHBOARD: "Panou de control"
+ UPDATES_AVAILABLE: "Actualizări disponibile"
+ DAYS: "Zile"
+ UPDATE: "Actualizează"
+ BACKUP: "Copie de siguranță"
+ BACKUPS: "Copii de rezervă"
+ BACKUP_NOW: "Crează o copie de rezervă acum"
+ BACKUPS_STATS: "Statistici pentru copiile de rezervă"
+ BACKUPS_HISTORY: "Istoric pentru copiile de rezervă"
+ BACKUPS_PURGE_CONFIG: "Șterge copiile de rezervă"
+ BACKUPS_PROFILES: "Profiluri de rezervă"
+ BACKUPS_COUNT: "Numărul de copii de rezervă"
+ BACKUPS_PROFILES_COUNT: "Numărul de profiluri"
+ BACKUPS_TOTAL_SIZE: "Spaţiul utilizat"
+ BACKUPS_NEWEST: "Cea mai nouă copipe de rezervă"
+ BACKUPS_OLDEST: "Cea mai veche copie de rezervă"
+ BACKUPS_PURGE: "Șterge"
+ BACKUPS_NOT_GENERATED: "Nu au fost generate copii de rezervă..."
+ BACKUPS_PURGE_NUMBER: "Folosind %s din %s sloturi de rezervă"
+ BACKUPS_PURGE_TIME: "%s zile rămase pentru copii de rezervă"
+ BACKUPS_PURGE_SPACE: "Folosind %s din %s"
+ BACKUP_DELETED: "Copia de rezervă ştearsă cu succes"
+ BACKUP_NOT_FOUND: "Copia de rezervă nu a fost găsită"
+ BACKUP_DATE: "Data copiei de rezervă"
+ STATISTICS: "Statistici"
+ TODAY: "Azi"
+ WEEK: "Săptămână"
+ MONTH: "Lună"
+ LATEST_PAGE_UPDATES: "Cele mai recente actualizări ale paginilor"
+ MAINTENANCE: "Mentenanță"
+ UPDATED: "Actualizat"
+ MON: "Luni"
+ TUE: "Marţi"
+ WED: "Miercuri"
+ THU: "Joi"
+ FRI: "Vineri"
+ SAT: "Sâmbătă"
+ SUN: "Duminică"
+ COPY: "Copiază"
+ EDIT: "Editează"
+ CREATE: "Creează"
+ GRAV_ADMIN: "Grav Admin"
+ GRAV_OFFICIAL_PLUGIN: "Modul oficial al Grav"
+ GRAV_OFFICIAL_THEME: "Tema oficială a Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Acest modul este legat simbolic. Actualizările nu vor fi detectate."
+ THEME_SYMBOLICALLY_LINKED: "Această temă este legată simbolic. Actualizările nu vor fi detectate"
+ REMOVE_PLUGIN: "Elimina modul"
+ INSTALL_PLUGIN: "Instalează modul"
+ AVAILABLE: "Disponibile"
+ INSTALLED: "Instalate"
+ INSTALL: "Instalează"
+ ACTIVE_THEME: "Temă activă"
+ SWITCHING_TO: "Schimbă"
+ SWITCHING_TO_DESCRIPTION: "Prin schimbarea temei nu există nici o garanție că toate aspectele paginilor sunt acceptate și pot apărea erori la încărcarea paginilor respective."
+ SWITCHING_TO_CONFIRMATION: "Vreți să continuați cu schimbarea temei"
+ CREATE_NEW_USER: "Creaţi utilizator nou"
+ REMOVE_USER: "Eliminați utilizatorul"
+ ACCESS_DENIED: "Acces refuzat"
+ ACCOUNT_NOT_ADMIN: "contul nu are permisiuni de administrator"
+ PHP_INFO: "Informaţii PHP"
+ INSTALLER: "Programul de instalare"
+ AVAILABLE_THEMES: "Teme disponibile"
+ AVAILABLE_PLUGINS: "Module disponibile"
+ INSTALLED_THEMES: "Teme instalate"
+ INSTALLED_PLUGINS: "Module instalate"
+ BROWSE_ERROR_LOGS: "Răsfoiţi jurnalele de erori"
+ SITE: "Site"
+ INFO: "Informații"
+ SYSTEM: "Sistem"
+ USER: "Utilizator"
+ ADD_ACCOUNT: "Adaugă cont"
+ SWITCH_LANGUAGE: "Schimbare limbă"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Modul activat"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Modul dezacticat"
+ SUCCESSFULLY_CHANGED_THEME: "Tema implicită a fost schimbată"
+ INSTALLATION_FAILED: "Instalare nereușită"
+ INSTALLATION_SUCCESSFUL: "Instalare reușită"
+ UNINSTALL_FAILED: "Dezinstalare nereușită"
+ UNINSTALL_SUCCESSFUL: "Dezinstalare reușită"
+ SUCCESSFULLY_SAVED: "Salvare reuşită"
+ SUCCESSFULLY_COPIED: "Copiere reușită"
+ REORDERING_WAS_SUCCESSFUL: "Reordonare a fost reușită"
+ SUCCESSFULLY_DELETED: "Ștergere reușită"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Schimbarea limbii reușită"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Nu aveți permisiuni suficiente pentru sarcină"
+ CACHE_CLEARED: "Memoria cache golită"
+ METHOD: "Metodă"
+ ERROR_CLEARING_CACHE: "Eroare golire memoria cache"
+ AN_ERROR_OCCURRED: "A apărut o eroare"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Copia de rezervă este gata pentru descărcare"
+ DOWNLOAD_BACKUP: "Descarcă copie de rezervă"
+ PAGES_FILTERED: "Pagini filtrate"
+ NO_PAGE_FOUND: "Pagina nu a fost găsită"
+ INVALID_PARAMETERS: "Parametri incorecţi"
+ NO_FILES_SENT: "Nici un fișier trimis"
+ EXCEEDED_FILESIZE_LIMIT: "Limita fișierului din configurarea PHP a fost depășită"
+ EXCEEDED_POSTMAX_LIMIT: "A depăşit configurarea PHP pentru post_max_size"
+ UNKNOWN_ERRORS: "Eroare necunoscută"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Limita fișierului de configurare Grav a fost depășită"
+ UNSUPPORTED_FILE_TYPE: "Tipul de fișier nu este suportat"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Nu a reuşit mutarea fişierului încărcat."
+ FILE_UPLOADED_SUCCESSFULLY: "Fişier încărcat cu succes"
+ FILE_DELETED: "Fișier sters"
+ FILE_COULD_NOT_BE_DELETED: "Fișierul nu poate fi șters"
+ FILE_NOT_FOUND: "Fișierul nu a fost găsit"
+ NO_FILE_FOUND: "Nici un fişier găsit"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav a fost actualizat cu succes la"
+ GRAV_UPDATE_FAILED: "Actualizarea Grav a eşuat"
+ EVERYTHING_UPDATED: "Totul a fost actualizat"
+ UPDATES_FAILED: "Actualizări nereușite"
+ AVATAR_BY: "Avatar de"
+ AVATAR_UPLOAD_OWN: "Sau încărcaţi-vă propriul..."
+ LAST_BACKUP: "Ultima copie de rezervă"
+ FULL_NAME: "Nume si prenume"
+ USERNAME: "Nume de utilizator"
+ EMAIL: "Adresa de e-mail"
+ USERNAME_EMAIL: "Numele de utilizator sau E-mail"
+ PASSWORD: "Parolă"
+ PASSWORD_CONFIRM: "Confirmați parola"
+ TITLE: "Titlu"
+ LANGUAGE: "Limbă"
+ ACCOUNT: "Cont"
+ EMAIL_VALIDATION_MESSAGE: "Trebuie să fie o adresă de e-mail validă"
+ PASSWORD_VALIDATION_MESSAGE: "Parola trebuie să conţină cel puţin un număr şi o majusculă, litere mici şi cel puţin 8 sau mai multe caractere"
+ LANGUAGE_HELP: "Setează limba preferată"
+ MEDIA: "Media"
+ DEFAULTS: "Implicite"
+ SITE_TITLE: "Titlul Site-ului"
+ SITE_TITLE_PLACEHOLDER: "Titlul Site-ului"
+ SITE_TITLE_HELP: "Titlul Site-ului dvs., adesea utilizat în teme"
+ SITE_DEFAULT_LANG: "Limba de bază"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Limba de bază folosită de eticheta a temei"
+ SITE_DEFAULT_LANG_HELP: "Limba de bază folosită de eticheta a temei"
+ DEFAULT_AUTHOR: "Autor implicit"
+ DEFAULT_AUTHOR_HELP: "Un nume de autor implicit, adesea utilizat în teme sau conţinutul paginii"
+ DEFAULT_EMAIL: "Adresă e-mail implicită"
+ DEFAULT_EMAIL_HELP: "O adresă de e-mail implicită folosită în teme sau pagini"
+ TAXONOMY_TYPES: "Tipuri de taxonomie"
+ TAXONOMY_TYPES_HELP: "Tipurile de taxonomie trebuie să fie definite aici dacă doriţi să le utilizaţi în pagini"
+ PAGE_SUMMARY: "Rezumatul paginii"
+ ENABLED: "Activat"
+ ENABLED_HELP: "Permite Rezumatul paginii (Rezumat este la fel cu conţinutul paginii)"
+ 'YES': "Da"
+ 'NO': "Nu"
+ SUMMARY_SIZE: "Dimensiunea Rezumatului"
+ SUMMARY_SIZE_HELP: "Cantitatea de caractere pe care o pagină le folosește pentru Rezumat"
+ FORMAT: "Formatul"
+ FORMAT_HELP: "scurt = utilizează prima apariţie a delimitatorului sau mărime; lung = delimitatorul pentru rezumat va fi ignorat"
+ SHORT: "Scurt"
+ LONG: "Lung"
+ DELIMITER: "Delimitator"
+ DELIMITER_HELP: "Delimitatorul rezumatului (implicit ' ===')"
+ METADATA: "Metadate"
+ METADATA_HELP: "Valorile implicite ale metadatelor care vor fi afişate pe fiecare pagină, cu excepţia cazului în care sunt suprascrise de pagini"
+ NAME: "Nume"
+ CONTENT: "Conținut"
+ SIZE: "Dimensiune"
+ ACTION: "Acţiune"
+ REDIRECTS_AND_ROUTES: "Redirecţionări & rute"
+ CUSTOM_REDIRECTS: "Redirecţionări personalizate"
+ CUSTOM_REDIRECTS_HELP: "rute pentru a redirecţiona către alte pagini. Înlocuirea Standard Regex este valabilă"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/pseudonimul/tau"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/redirecţionarea/ta"
+ CUSTOM_ROUTES: "Rute personalizate"
+ CUSTOM_ROUTES_HELP: "rute pentru a redirecţiona alias-ul către alte pagini. Înlocuirea Standard Regex este valabilă"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/pseudonimul/tau"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/ruta/ta"
+ FILE_STREAMS: "Fluxuri de fișiere"
+ DEFAULT: "Implicit"
+ PAGE_MEDIA: "Media din pagină"
+ OPTIONS: "Opţiuni"
+ PUBLISHED: "Publicat"
+ PUBLISHED_HELP: "În mod implicit, o pagină este publicată cu excepţia cazului în care setaţi explicit publicarea: false sau prin intermediul unui publish_date în viitor, sau unpublish_date în trecut"
+ DATE: "Dată"
+ DATE_HELP: "Variabila dată permite setarea unei date specifice asociată cu această pagină."
+ PUBLISHED_DATE: "Data publicării"
+ PUBLISHED_DATE_HELP: "Poți oferi o dată pentru a declanşa în mod automat publicarea."
+ UNPUBLISHED_DATE: "Data nepublicare"
+ UNPUBLISHED_DATE_HELP: "Poți oferi o dată pentru a declanşa în mod automat nepublicarea."
+ ROBOTS: "Roboți"
+ TAXONOMIES: "Taxonomii"
+ TAXONOMY: "Taxonomie"
+ ADVANCED: "Setări Avansate"
+ SETTINGS: "Configurări"
+ FOLDER_NUMERIC_PREFIX: "Prefix numeric pentru dosare"
+ FOLDER_NUMERIC_PREFIX_HELP: "Prefix numeric care asigură ordonarea manuală şi presupune vizibilitate"
+ FOLDER_NAME: "Numele Dosarului"
+ FOLDER_NAME_HELP: "Numele dosarului care va fi stocat în sistem pentru această pagină"
+ PARENT: "Părinte"
+ DEFAULT_OPTION_ROOT: "-Rădăcină-"
+ DEFAULT_OPTION_SELECT: "- Selectează -"
+ DISPLAY_TEMPLATE: "Afișează șablon"
+ DISPLAY_TEMPLATE_HELP: "Tipuri de pagini care implică șablonurie Twig ce vor reda pagina"
+ BODY_CLASSES: "Clase pentru „Body”"
+ ORDERING: "Ordonare"
+ PAGE_ORDER: "Ordinea paginilor"
+ OVERRIDES: "Suprascrie"
+ MENU: "Meniu"
+ MENU_HELP: "Numele utilizat în meniu. Dacă nu există, Titlul va fi folosit."
+ SLUG: "Slug"
+ SLUG_HELP: "Variabila slug permite setarea părții URL-ului paginii"
+ SLUG_VALIDATE_MESSAGE: "Variabila slug trebuie să conţină numai caractere alfanumerice, litere mici și cratime"
+ PROCESS: "Prelucrare"
+ PROCESS_HELP: "Controlează modul în care paginile sunt prelucrate. Poate fi setat mai degrabă pe pagină decât la nivel global"
+ DEFAULT_CHILD_TYPE: "Tipul implicit de copil"
+ USE_GLOBAL: "Utilizează global"
+ ROUTABLE: "Rutabil"
+ ROUTABLE_HELP: "Dacă această pagină este accesibilă cu un URL"
+ CACHING: "Cache-ul"
+ VISIBLE: "Vizibil"
+ VISIBLE_HELP: "Determină dacă o pagină este vizibilă în navigaţie."
+ DISABLED: "Dezactivat"
+ ITEMS: "Articole"
+ ORDER_BY: "Ordonare după"
+ ORDER: "Ordonare"
+ FOLDER: "Dosare"
+ ASCENDING: "Crescător"
+ DESCENDING: "Descrescător"
+ ADD_MODULAR_CONTENT: "Adăugaţi conţinut modular"
+ PAGE_TITLE: "Titlul paginii"
+ PAGE_TITLE_HELP: "Titlul paginii"
+ PAGE: "Pagină"
+ MODULAR_TEMPLATE: "Şablon modular"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Nume fișier"
+ PARENT_PAGE: "Pagina părinte"
+ HOME_PAGE: "Pagina principală"
+ HOME_PAGE_HELP: "Pagina pe care Grav o va folosi ca pagină de destinaţie implicită"
+ DEFAULT_THEME: "Tema implicită"
+ DEFAULT_THEME_HELP: "Setează tema implicită pentru Grav (implicit este Antimatter)"
+ TIMEZONE: "Fus orar"
+ TIMEZONE_HELP: "Suprascrie implicit server-ul de fus orar"
+ SHORT_DATE_FORMAT: "Format de afişare pentru dată scurtă"
+ SHORT_DATE_FORMAT_HELP: "Setaţi formatul dată scurtă care poate fi utilizat de teme"
+ LONG_DATE_FORMAT: "Format de afişare pentru dată lungă"
+ LONG_DATE_FORMAT_HELP: "Setaţi formatul dată lungă care poate fi utilizat de teme"
+ DEFAULT_ORDERING: "Ordine de sortare implicită"
+ DEFAULT_ORDERING_HELP: "Paginile în listă vor fi afișate utilizând această ordonare doar dacă nu este suprascrisă"
+ DEFAULT_ORDERING_DEFAULT: "Implicit - bazat pe nume de dosar"
+ DEFAULT_ORDERING_FOLDER: "Dosar - bazat pe nume de dosar fără prefix"
+ DEFAULT_ORDERING_TITLE: "Titlu - bazat pe câmpul titlu din Header"
+ DEFAULT_ORDERING_DATE: "Dată - bazat pe câmpul dată din Header"
+ DEFAULT_ORDER_DIRECTION: "Metodă implicită de ordonare"
+ DEFAULT_ORDER_DIRECTION_HELP: "Direcţia paginilor într-o listă"
+ DEFAULT_PAGE_COUNT: "Contor de pagină implicit"
+ DEFAULT_PAGE_COUNT_HELP: "Numărul maxim de cotor de pagini într-o listă"
+ DATE_BASED_PUBLISHING: "Publicare bazată pe dată"
+ DATE_BASED_PUBLISHING_HELP: "(ne)publică în mod automat în funcție de dată"
+ EVENTS: "Evenimente"
+ EVENTS_HELP: "Activează sau dezactivează evenimente specifice. Dezactivarea acestora poate strica funcționarea modulelor"
+ REDIRECT_DEFAULT_ROUTE: "Redirecţionare Rută implicită"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Redirecționarea automată către ruta implicită a unei pagini"
+ LANGUAGES: "Limbi"
+ SUPPORTED: "Acceptate"
+ SUPPORTED_HELP: "Separate prin virgulă, lista codurilor de limbă din 2 litere (de exemplu \"en, fr, de\")"
+ TRANSLATIONS_ENABLED: "Traduceri activate"
+ TRANSLATIONS_ENABLED_HELP: "Suportă traduceri în Grav, module și extensii"
+ TRANSLATIONS_FALLBACK: "Traduceri de rezervă"
+ TRANSLATIONS_FALLBACK_HELP: "Selectează automat traduceri suportate dacă limba activă nu există"
+ ACTIVE_LANGUAGE_IN_SESSION: "Limba activă în sesiune"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Stochează limba activă în sesiune"
+ HTTP_HEADERS: "Antetele HTTP"
+ EXPIRES: "Expiră la"
+ EXPIRES_HELP: "Setează expirare antet. Valoarea este în secunde."
+ CACHE_CONTROL: "HTTP Cache-Control"
+ CACHE_CONTROL_HELP: "Setat la o valoare validă pentru controlul cache precum `no-cache, no-store, must-revalidate`"
+ LAST_MODIFIED: "Ultima modificare"
+ LAST_MODIFIED_HELP: "Setează ultimul antet modificat, care poate ajuta la optimizarea proxy-ului şi cache-ului în browser"
+ ETAG: "ETag"
+ ETAG_HELP: "Setează antetul etag pentru a ajuta la identificare în cazul în care o pagină a fost modificată"
+ VARY_ACCEPT_ENCODING: "Variază codificarea acceptată"
+ VARY_ACCEPT_ENCODING_HELP: "Setează antetul ' Vary: acceptă codificarea ' pentru a ajuta cu proxy şi CDN cache"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Markdown extra"
+ MARKDOWN_EXTRA_HELP: "Activaţi suportul implicit pentru Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Ignoră elementele HTML în interiorul textelor Markdown Extra"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Ignoră elementele HTML în interiorul textelor Markdown Extra"
+ AUTO_LINE_BREAKS: "Terminări de linii automate"
+ AUTO_LINE_BREAKS_HELP: "Activarea suportului pentru linie automata în markdown"
+ AUTO_URL_LINKS: "Link-uri URL auto"
+ AUTO_URL_LINKS_HELP: "Activează conversia automata de URL-uri în hyperlink-uri HTML"
+ ESCAPE_MARKUP: "Ieșire din markup"
+ ESCAPE_MARKUP_HELP: "Modifică automat etichetele markup în HTML"
+ CACHING_HELP: "Comutator global on/off pentru a activa/dezactiva cache Grav"
+ CACHE_CHECK_METHOD: "Metoda de verificare cache"
+ CACHE_CHECK_METHOD_HELP: "Selectaţi metoda pe care Grav o utilizează pentru a verifica dacă fişierele au fost modificate."
+ CACHE_DRIVER: "Driver-ul pentru Cache"
+ CACHE_DRIVER_HELP: "Alege ce driver de cache ar trebui să utilizeze Grav. 'Detectare automată' încearcă să găsească cel mai bun în cazul de față"
+ CACHE_PREFIX: "Prefixul Cache-ului"
+ CACHE_PREFIX_HELP: "Un identificator pentru o parte a cheii Grav. Nu modificați decât dacă ştiți ce faceți."
+ CACHE_PREFIX_PLACEHOLDER: "Derivat din URL de bază (suprascrie introducând şir aleator)"
+ CACHE_PURGE_JOB: "Rulează acțiunea prestabilită de ștergere"
+ CACHE_PURGE_JOB_HELP: "Cu ajutorul acestei acțiuni puteți curăța la intervale prestabilite fișierele vechi ale Doctrine"
+ CACHE_CLEAR_JOB: "Rulează acțiunea prestabilită de ștergere"
+ CACHE_CLEAR_JOB_HELP: "Cu orarul periodic puteţi şterge memoria Grav Cache"
+ CACHE_JOB_TYPE: "Tip de memorie cache"
+ CACHE_JOB_TYPE_HELP: "Șterge memoria cache ori cu opțiunea pe dosare 'standard' ori cu 'toate' dosarele"
+ CACHE_PURGE: "Șterge Cache-ul vechi"
+ LIFETIME: "Durata de viaţă"
+ LIFETIME_HELP: "Stabileşte durata memoriei cache în secunde. 0 = infinit"
+ GZIP_COMPRESSION: "Compresie gzip"
+ GZIP_COMPRESSION_HELP: "Activați compresia GZip a Grav pentru performanţe sporite."
+ TWIG_TEMPLATING: "Creare șabloane cu Twig"
+ TWIG_CACHING: "Memoria Cache pentru Twig"
+ TWIG_CACHING_HELP: "Controlează mecanismul pentru memoria cache a Twig. Lăsați această opțiune activată pentru cea mai bună performanță."
+ TWIG_DEBUG: "Twig debug"
+ TWIG_DEBUG_HELP: "Permite opțiunea de a nu încărca extensia Twig debugger"
+ DETECT_CHANGES: "Detectează schimbări"
+ DETECT_CHANGES_HELP: "Twig va recompila automat cache-ul Twig în cazul în care detectează orice modificări în şabloanele Twig"
+ AUTOESCAPE_VARIABLES: "Variabile automate de ieșire"
+ AUTOESCAPE_VARIABLES_HELP: "Ieșire pentru toate variabilele. Acest lucru cel mai probabil va strica site-ul"
+ ASSETS: "Active"
+ CSS_PIPELINE: "CSS principal"
+ CSS_PIPELINE_HELP: "CSS principal este unificarea resurselor CSS într-un singur fișier"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Include externe în CSS principal"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Uneori, URL-urile externe au referințe fișiere relative și nu trebuiesc incluse în CSS principal"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Randarea întâi a CSS principal"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Randare CSS principal înaintea oricăror alte referințe CSS care nu sunt incluse"
+ CSS_MINIFY: "Micșorare CSS"
+ CSS_MINIFY_HELP: "Micșorează CSS în timpul creării CSS-ului principal"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "Suprascrie micșorarea CSS pentru Windows"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Suprascrie micșorarea pentru platformele Windows. False în mod implicit datorită ThreadStackSize"
+ CSS_REWRITE: "Rescrie CSS"
+ CSS_REWRITE_HELP: "Rescrie URL-uri relative în timpul creării CSS principal"
+ JAVASCRIPT_PIPELINE: "JavaScript Principal"
+ JAVASCRIPT_PIPELINE_HELP: "JS principal este unificarea resurselor JS într-un singur fișier"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Include externe în JS principal"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Uneori, URL-urile externe au referințe fișiere relative și nu trebuiesc incluse în JS principal"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Randarea întâi a JS principal"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Randarea JS principal înaintea oricăror referințe JS care nu sunt incluse"
+ JAVASCRIPT_MINIFY: "Micșorarea JavaScript"
+ JAVASCRIPT_MINIFY_HELP: "Micșorează JS în timpul creării JS-ului principal"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Activează ștampile de dată pentru active"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Activează ștampilele de dată ale activelor"
+ COLLECTIONS: "Colecții"
+ ERROR_HANDLER: "Manipulant pentru erori"
+ DISPLAY_ERRORS: "Afișează erorile"
+ DISPLAY_ERRORS_HELP: "Afișează în stil complet pagina cu erori"
+ LOG_ERRORS: "Salvează erorile"
+ LOG_ERRORS_HELP: "Salvează erorile în /fișiere pentru erori"
+ LOG_HANDLER: "Manipulant pentru registru"
+ LOG_HANDLER_HELP: "Unde for fi stocate registrele"
+ SYSLOG_FACILITY: "Facilitatea Syslog"
+ SYSLOG_FACILITY_HELP: "Facilitatea Syslog pentru rezultate"
+ DEBUGGER: "Debugger"
+ DEBUGGER_HELP: "Activează debugger pentru Grav și următoarele setări"
+ DEBUG_TWIG: "Debug Twig"
+ DEBUG_TWIG_HELP: "Activează debugging pentru șabloane Twig"
+ SHUTDOWN_CLOSE_CONNECTION: "Blochează conexiunea închisă"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Închide conexiunea înainte de onShutdown(). false pentru debug"
+ DEFAULT_IMAGE_QUALITY: "Calitatea implicită a imaginilor"
+ DEFAULT_IMAGE_QUALITY_HELP: "Calitatea implicită a imaginilor pentru crearea de cache sau re-rendare (85%)"
+ CACHE_ALL: "Include în memoria cache toate imaginile"
+ CACHE_ALL_HELP: "Rulează toate imaginile prin intermediul sistemului de cache-ul al Grav, chiar dacă au manipulări de media"
+ IMAGES_DEBUG: "Inscripționare imagini pentru Debug"
+ IMAGES_DEBUG_HELP: "Arată o suprapunere peste imagini indicând adâncimea de pixeli a imaginii atunci când se lucrează cu retina de exemplu"
+ IMAGES_SEOFRIENDLY: "Nume de imagini bune pentru SEO"
+ IMAGES_SEOFRIENDLY_HELP: "Când este activată, numele imaginii este afişat primul, apoi un hash mai mic pentru a reflecta operaţiunile procesate"
+ UPLOAD_LIMIT: "Valoare limită încărcare fișier"
+ UPLOAD_LIMIT_HELP: "Setaţi dimensiunea maximă de încărcare în octeţi (0 este nelimitat)"
+ ENABLE_MEDIA_TIMESTAMP: "Activează ștampile de dată pentru fișiere media"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Adaugă ștamplilă dată bazată pe ultima modificare pentru fiecare element de media"
+ SESSION: "Sesiune"
+ SESSION_ENABLED_HELP: "Permite ajutor de sesiune în cadrul Grav"
+ TIMEOUT: "Timeout"
+ TIMEOUT_HELP: "Setează timeout pentru sesiune în secunde"
+ SESSION_NAME_HELP: "Un identificator utilizat pentru a forma denumirea modulul cookie de sesiune"
+ SESSION_UNIQUENESS: "Șiruri de caractere unice"
+ SESSION_UNIQUENESS_HELP: "MD5 hash pentru calea de acces principală a Grav, de exemplu 'GRAV_ROOT' (calea implicită) sau bazată pe o înșiruire aleatorie de caractere 'security.salt'."
+ ABSOLUTE_URLS: "URL-urile absolute"
+ ABSOLUTE_URLS_HELP: "URL-uri absolute sau relative pentru 'base_url'"
+ PARAMETER_SEPARATOR: "Separator de parametri"
+ PARAMETER_SEPARATOR_HELP: "Separator pentru parametrii trecuți, care pot fi schimbați pentru Apache pe platforme Windows"
+ TASK_COMPLETED: "Sarcină finalizată"
+ EVERYTHING_UP_TO_DATE: "Totul este la zi"
+ UPDATES_ARE_AVAILABLE: "sunt disponibile noi actualizări"
+ IS_AVAILABLE_FOR_UPDATE: "este disponibil pentru actualizare"
+ IS_NOW_AVAILABLE: "este acum disponibil"
+ CURRENT: "Curent"
+ UPDATE_GRAV_NOW: "Actualizează Grav acum"
+ GRAV_SYMBOLICALLY_LINKED: "Grav este legat simbolic. Nu va fi disponibilă actualizarea"
+ UPDATING_PLEASE_WAIT: "Actualizare... vă rugăm aşteptaţi, descărcare"
+ OF_THIS: "al acestui"
+ OF_YOUR: "al tău"
+ HAVE_AN_UPDATE_AVAILABLE: "au o actualizare disponibilă"
+ SAVE_AS: "Salvează ca"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Sunteţi sigur că doriţi să ştergeţi această pagină şi toți copiii ei? În cazul în care pagina este tradusă în alte limbi, aceste traduceri vor fi păstrate şi trebuie să șterse separat. În caz contrar dosarul paginii va fi şters împreună cu subpaginile sale. Această acţiune nu poate fi modificată ulterior."
+ AND: "şi"
+ UPDATE_AVAILABLE: "Actualizare disponibilă"
+ METADATA_KEY: "Cheie (ex: ' cuvânt-cheie')"
+ METADATA_VALUE: "Valoare (ex. ' Blog, Grav')"
+ USERNAME_HELP: "Numele de utilizator trebuie să fie între 3 şi 16 caractere ți să includă litere mici, numere, linii de subliniere şi cratime. Literele mari, spaţile şi caracterele speciale nu sunt permise"
+ FULLY_UPDATED: "Complet actualizat"
+ SAVE_LOCATION: "Salvați locația"
+ PAGE_FILE: "Şablon de pagină"
+ PAGE_FILE_HELP: "Numele șablonului de pagină și implicit șablonul afișat pentru această pagină"
+ NO_USER_ACCOUNTS: "Nu au fost găsiți conturi de utilizatori, vă rugăm să creați unul..."
+ NO_USER_EXISTS: "Nu există utilizator local pentru acest cont, nu se poate efectua salvarea..."
+ REDIRECT_TRAILING_SLASH: "/ atașat după redirecționare"
+ REDIRECT_TRAILING_SLASH_HELP: "Efectuează o redirecționare 301 decât folosirea / atașat după redirecționare."
+ DEFAULT_DATE_FORMAT: "Formatarea datei paginii"
+ DEFAULT_DATE_FORMAT_HELP: "Formatarea datei folosită de Grav. Implicit, Grav încearcă să ghicească formatul datei, dar poți specifica un format folosind sintaxa PHP (ex: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Ghicește automat"
+ IGNORE_FILES: "Ignoră fișierele"
+ IGNORE_FILES_HELP: "Fişiere specifice ignorate la prelucrarea paginii"
+ IGNORE_FOLDERS: "Ignoră dosare"
+ IGNORE_FOLDERS_HELP: "Dosare specifice ignorate la prelucrarea paginii"
+ HIDE_EMPTY_FOLDERS: "Ascunde dosare goale"
+ HIDE_EMPTY_FOLDERS_HELP: "În cazul în care dosarul nu are nici o filă .md, ar trebui să fie ascuns în navigare și nerutabil"
+ HTTP_ACCEPT_LANGUAGE: "Configurează limba din browser"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Puteţi opta pentru a încerca să configuraţi limba în browser bazat pe tag-ul de antet 'http_accept_language'"
+ OVERRIDE_LOCALE: "Suprascrie setările locale"
+ OVERRIDE_LOCALE_HELP: "Suprascrie setarările locale în PHP bazate pe Limba curentă"
+ REDIRECT: "Redirecţionare de pagină"
+ REDIRECT_HELP: "Introduceţi o de rută de pagină sau URL-ul extern pentru această pagină pentru a redirecţiona. ex. '/ traseu/anume' sau 'http://siteulmeu.com'"
+ PLUGIN_STATUS: "Statutul modulului"
+ INCLUDE_DEFAULT_LANG: "Include limba implicită"
+ INCLUDE_DEFAULT_LANG_HELP: "Acest lucru va ataşa pentru toate URL-urile în limba implicită cu limba implicită. ex. \"/ ro/blog/articol\""
+ PAGES_FALLBACK_ONLY: "Doar pagini de rezervă"
+ PAGES_FALLBACK_ONLY_HELP: "Doar \"rezervă\" pentru a găsi conţinutul paginii prin limbajele suportate, comportamentul implicit este de a afişa orice limbă găsită dacă lipseşte limba activă"
+ ALLOW_URL_TAXONOMY_FILTERS: "Filtre de taxonomie URL"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Pagini bazate pe colecții permite filtrarea prin ' / taxonomy: valoare '."
+ REDIRECT_DEFAULT_CODE: "Codul implicit de redirecţionare"
+ REDIRECT_DEFAULT_CODE_HELP: "Codul de stare HTTP pentru redirecționare"
+ IGNORE_HIDDEN: "Ignoră ascunse"
+ IGNORE_HIDDEN_HELP: "Ignoră toate fişierele şi dosarele care încep cu un punct „.”"
+ WRAPPED_SITE: "Site „învelit”"
+ WRAPPED_SITE_HELP: "Pentru ca temele/modulele să ştie dacă Grav este înfăşurat de o altă platformă"
+ FALLBACK_TYPES: "Tipuri permise de rezervă"
+ FALLBACK_TYPES_HELP: "Tipuri de fișiere permise care pot fi găsite la accesarea rutei. Implicite sunt toate fișierele media suportate."
+ INLINE_TYPES: "Tipuri permise de rezervă „inline”"
+ INLINE_TYPES_HELP: "O listă cu tipuri de fişiere care ar trebui să fie afişate mai degrabă „inline” decât descarcate"
+ APPEND_URL_EXT: "Adăugaţi extensia URL-ului"
+ APPEND_URL_EXT_HELP: "Va adăuga o extensie personalizat URL-ul paginii. Reţineţi, acest lucru va însemna că Grav va căuta șablonul `. . twig`"
+ PAGE_MODES: "Moduri de pagini"
+ PAGE_TYPES: "Tipuri de pagină"
+ PAGE_TYPES_HELP: "Determină tipul de pagină care suporta Grav şi ordinea determină ce tip să fie folosit în cazul în care cererea este ambiguă"
+ ACCESS_LEVELS: "Nivele de acces"
+ GROUPS: "Grupuri"
+ GROUPS_HELP: "Lista de grupuri din care utilizatorul face parte"
+ ADMIN_ACCESS: "Acces Administrator"
+ SITE_ACCESS: "Acces Site"
+ INVALID_SECURITY_TOKEN: "Token de securitate incorect"
+ ACTIVATE: "Activează"
+ TWIG_UMASK_FIX: "Umask Fix"
+ TWIG_UMASK_FIX_HELP: "Implicit Twig creează fişiere cache cu permisiunea 0755, repararea comută la 0775"
+ CACHE_PERMS: "Permisiunile cache-ullui"
+ CACHE_PERMS_HELP: "Permisiunile dosarului de cache-ul. De obicei 0755 sau 0775 în funcţie de configurare"
+ REMOVE_SUCCESSFUL: "Eliminare reușită"
+ REMOVE_FAILED: "Eliminarea nu a reușit"
+ HIDE_HOME_IN_URLS: "Ascunde ruta principală în URL-uri"
+ HIDE_HOME_IN_URLS_HELP: "Va asigura rutele implicite pentru orice pagini copil ale paginii principale"
+ TWIG_FIRST: "Procesează Twig primul"
+ TWIG_FIRST_HELP: "Dacă aţi activat prelucrarea Twig, puteţi configura Twig să fie prelucrat înainte sau după Markdown"
+ SESSION_SECURE: "Securizat"
+ SESSION_SECURE_HELP: "Dacă este adevărat indică faptul că, comunicarea pentru aceste cookie trebuie să fie prin transmisie criptată. Avertisment: Activeză numai pe site-uri care rulează exclusiv pe HTTPS (server-ul este setat cu HTTPS)"
+ SESSION_HTTPONLY: "numai HTTP"
+ SESSION_HTTPONLY_HELP: "Dacă este adevărat, indică faptul că se folosesc cookie-uri doar prin HTTP şi modificarea prin JavaScript nu este permisă"
+ REVERSE_PROXY: "Inversare proxy"
+ REVERSE_PROXY_HELP: "Activeză această opțiune în cazul în care sunteţi în spatele un proxy şi aveţi probleme cu URL-uri care conţin porturi incorecte"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Frontmatter nu este valid, salvare nereușită"
+ ADD_FOLDER: "Adaugă dosar"
+ PROXY_URL: "Proxy URL"
+ PROXY_URL_HELP: "Introduceţi proxy HOST sau IP şi portul"
+ NOTHING_TO_SAVE: "Nimic de salvat"
+ FILE_ERROR_ADD: "S-a produs o eroare în timpul adăugării fișierului"
+ FILE_ERROR_UPLOAD: "O eroare s-a produs în timpul încărcării fișierului"
+ FILE_UNSUPPORTED: "Tipul de fișier nu este suportat"
+ ADD_ITEM: "Adauga articol"
+ FILE_TOO_LARGE: "Fişierul este prea mare pentru a fi încărcat, maximul permis este %s, conform setărilor PHP. Mărește setarea PHP 'post_max_size'"
+ INSTALLING: "Instalare"
+ LOADING: "Încărcare.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Următoarele dependenţe trebuie să fie îndeplinite înainte:"
+ ERROR_INSTALLING_PACKAGES: "Eroare în timpul instalării pachetului(lor)"
+ INSTALLING_DEPENDENCIES: "Instalare dependenţe..."
+ INSTALLING_PACKAGES: "Instalare pachet(e).."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Pachet(e) instalat(e) cu succes."
+ READY_TO_INSTALL_PACKAGES: "Gata pentru a instala pachete"
+ PACKAGES_NOT_INSTALLED: "Pachetele nu au fost instalate"
+ PACKAGES_NEED_UPDATE: "Pachete deja instalate, dar prea vechi"
+ PACKAGES_SUGGESTED_UPDATE: "Pachete deja instalate, şi versiunea este ok, dar vor fi actualizate pentru a vă ţine la curent"
+ REMOVE_THE: "Eliminare %s"
+ CONFIRM_REMOVAL: "Eşti sigur că dorești să ștergi %s?"
+ REMOVED_SUCCESSFULLY: "%s eliminat cu succes"
+ ERROR_REMOVING_THE: "Eroare la ștergerea %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s necesită următoarele dependenţe, care nu sunt cerute de alte pachete instalate. Dacă nu le utilizaţi, eliminaţi-le direct de aici."
+ READY_TO_UPDATE_PACKAGES: "Gata pentru a actualiza pachete"
+ ERROR_UPDATING_PACKAGES: "Eroare în timpul actualizării pachetelor"
+ UPDATING_PACKAGES: "Actualizarea pachete.."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Pachet(e) actualizat(e) cu succes."
+ UPDATING: "Actualizare"
+ GPM_RELEASES: "Lansări GPM"
+ GPM_RELEASES_HELP: "Alege 'Testare' pentru a instala versiunea beta sau versiuni de testare"
+ GPM_METHOD: "Metoda de descărcare de la distanță"
+ GPM_METHOD_HELP: "Când este setată Auto, Grav va determina dacă fopen este disponibil și îl va utiliza, altfel va merge pe varianta cURL. Pentru a forța utilizarea uneia dintre opțiuni modificați setarea."
+ GPM_VERIFY_PEER: "Verificarea de la distanță a emitentului (SSL)"
+ GPM_VERIFY_PEER_HELP: "Unii furnizori nu reușesc să verifice certificatul SSL al getgrav.org și din această cauză GPM nu funcționează. Dacă vă aflați în această situație, oprirea acestei setări vă poate ajuta"
+ AUTO: "Automat"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabil"
+ TESTING: "Testare"
+ FRONTMATTER_PROCESS_TWIG: "Procesează Twig din frontmatter"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Când este activat, poți folosi variabile de configurare Twig în paginație"
+ FRONTMATTER_IGNORE_FIELDS: "Ignoră câmpurile frontmatter"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Anumite câmpuri din frontmatter pot conține Twig dar nu are trebui procesate, ex: formulare"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Pachetul %s instalat cu succes"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Părintele setează ordinea, ordinea dezactivată"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Pagina nu este vizibilă, ordonarea este dezactovată"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Ordonarea via Admin nu este acceptată deoarece există mai mult de 200 de „rude”"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Aranjarea paginilor este dezactivată pentru această pagină pentru că Numărarea Numerică a Dosarelor este dezactivată"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "Notă: Nu puteți adăuga fișiere media decât după salvarea paginii. Dați clic pe \"Salvează\" în dreapta-sus"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "Notă: Pagina trebuie salvată înainte de a putea încărca fișiere."
+ DROP_FILES_HERE_TO_UPLOAD: "Adăugați fișierele aici sau Dați clic pe zona aceasta "
+ INSERT: "Inserează"
+ UNDO: "Revenire"
+ REDO: "Refă"
+ HEADERS: "Anteturi"
+ BOLD: "Îngroşat"
+ ITALIC: "Cursiv"
+ STRIKETHROUGH: "Tăiat cu o linie"
+ SUMMARY_DELIMITER: "Delimitator pentru rezumat"
+ LINK: "Link"
+ IMAGE: "Imagine"
+ BLOCKQUOTE: "Citat"
+ UNORDERED_LIST: "Listă neordonată"
+ ORDERED_LIST: "Listă ordonată"
+ EDITOR: "Editor"
+ PREVIEW: "Previzualizare"
+ FULLSCREEN: "Pe tot ecranul"
+ MODULAR: "Modulare"
+ MODULAR_SETUP: "Configurare modulară"
+ NON_ROUTABLE: "Nerutabil"
+ NON_MODULAR: "Non-modular"
+ NON_VISIBLE: "Invizibil"
+ NON_PUBLISHED: "Nepublicat"
+ CHARACTERS: "caractere"
+ PUBLISHING: "Pentru publicare"
+ NOTIFICATIONS: "Notificări"
+ MEDIA_TYPES: "Tipuri de media"
+ IMAGE_OPTIONS: "Opţiuni Imagine"
+ MIME_TYPE: "Tipuri Mime"
+ THUMB: "Icoană"
+ TYPE: "Tip"
+ FILE_EXTENSION: "Extensie de fișier"
+ LEGEND: "Legenda Paginii"
+ MEMCACHE_SERVER: "Server pentru Memcache"
+ MEMCACHE_SERVER_HELP: "Adresa serverului Memcache"
+ MEMCACHE_PORT: "Portul pentru Memcache"
+ MEMCACHE_PORT_HELP: "Portul serverului pentru Memcahce"
+ MEMCACHED_SERVER: "Server Memcached"
+ MEMCACHED_SERVER_HELP: "Adresa serverului Memcached"
+ MEMCACHED_PORT: "Portul pentru Memcached"
+ MEMCACHED_PORT_HELP: "Portul serverului pentru Memcahced"
+ REDIS_SERVER: "Server Redis"
+ REDIS_SERVER_HELP: "Adresa serverului Redis"
+ REDIS_PORT: "Portul pentru Redis"
+ REDIS_PORT_HELP: "Portul serverului pentru Redis"
+ REDIS_PASSWORD: "Parolă / Secret Redis"
+ ALL: "Toate"
+ FROM: "de la"
+ TO: "către"
+ RELEASE_DATE: "Data de lansare"
+ SORT_BY: "Sortează după"
+ RESOURCE_FILTER: "Filtrează ..."
+ FORCE_SSL: "Forțează SSL"
+ FORCE_SSL_HELP: "Forțează SSL la nivel global, dacă este activată în timp ce site-ul este accesibil prin HTTP, Grav trimite o redirecționare către pagina HTTPS"
+ NEWS_FEED: "Flux de ştiri"
+ EXTERNAL_URL: "URL Extern"
+ SESSION_PATH: "Calea sesiunii"
+ SESSION_PATH_HELP: "Folosiți doar în cazul în care alegeți un URL personalizat (rescrieți dosarul / domeniul site-ului)"
+ CUSTOM_BASE_URL: "URL de bază personalizat"
+ CUSTOM_BASE_URL_HELP: "Utilizați doar în cazul în care rescrieți domeniul site-ului sau folosiți alt dosar față de cel utilizat în mod implicit de Grav. De eg: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: '"%s" nu pot fi utilizate în afara paginilor.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Fișierul %s: %s nu a putut fi încărcat'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Fișierul %s nu a putut fi mutat în "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Anulează încărcarea'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Sunteţi sigur că doriţi să anulaţi această încărcare?'
+ DROPZONE_DEFAULT_MESSAGE: 'Adăugați fișierele aici sau Dați clic pe zona aceasta '
+ DROPZONE_FALLBACK_MESSAGE: 'Browser-ul Dvs. nu acceptă încărcarea prin tragere și eliberare.'
+ DROPZONE_FALLBACK_TEXT: 'Vă rugăm utilizați formularul de rezervă de mai jos pentru a încărca fișierele Dvs. precum în zilele de demult.'
+ DROPZONE_FILE_TOO_BIG: 'Fișierul este prea mare ({{filesize}}MiB). Mărimea maximă admisă este {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Nu este permisă încărcarea acestui tip de fișier."
+ DROPZONE_MAX_FILES_EXCEEDED: "Nu mai puteţi încărca alte fişiere."
+ DROPZONE_REMOVE_FILE: "Ștergeți fișier"
+ DROPZONE_RESPONSE_ERROR: "Serverul a răspuns cu codul de {{statusCode}}."
+ PREMIUM_PRODUCT: "Versiunea Premium"
+ ADMIN_CACHING: "Permite adăugarea în memoria cache a Admin"
+ ADMIN_CACHING_HELP: "Memoria de cache în Admin poate fi controlată independent de memoria cache a site-ului"
+ DESTINATION_NOT_SPECIFIED: "Destinația nu a fost specificată"
+ UPLOAD_ERR_NO_TMP_DIR: "Lipsește un dosar temporar"
+ SESSION_SPLIT: "Împărțire sesiune"
+ SESSION_SPLIT_HELP: "Sesiuni independente și separate între site și alte module instalate (de eg: Admin)"
+ ERROR_FULL_BACKTRACE: "Eroare cu calea completă"
+ ERROR_SIMPLE: "Eroare simplă"
+ ERROR_SYSTEM: "Eroare de sistem"
+ IMAGES_AUTO_FIX_ORIENTATION: "Fixează orientarea automat"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Decide automat orientarea imaginii în funcție de detaliile Exif"
+ REDIS_SOCKET: "Port pentru Redis"
+ REDIS_SOCKET_HELP: "Portul pentru Redis"
+ NOT_SET: "Nu este setată"
+ PERMISSIONS: "Permisiuni"
+ NEVER_CACHE_TWIG: "Nu utiliza Cache-ul Twig niciodată"
+ NEVER_CACHE_TWIG_HELP: "Stochează în cache doar conținutul șoc procesează Twig de fiecare dată pentru pagini. Ignoră setările twig_first."
+ ALLOW_WEBSERVER_GZIP: "Permite WebServer Gzip"
+ ALLOW_WEBSERVER_GZIP_HELP: "Dezactivată în mod implicit. Dacă este activată, compresia Gzip/Defflate configurată pe WebServer va funcționa dar conexiunile Http nu vor fi închise cu evenimentul onShutDown() astfel paginile se vor încarca mai greu"
+ OFFLINE_WARNING: "Conexiunea la GPM nu poate fi stabilită"
+ CLEAR_IMAGES_BY_DEFAULT: "Eliberați impicit cache-ul pentru imagini"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "În mod implicit imaginile procesate sunt eliminate din cache pentru toate setările de eliberarea memoriei cache, însă acest lucru poate fi dezactivat"
+ CLI_COMPATIBILITY: "Compatibilitate CLI"
+ CLI_COMPATIBILITY_HELP: "Asigură folosirea doar a driverelor de Cache ne-volatile (fișiere, redis, memcache, etc...)"
+ REINSTALL_PLUGIN: "Reinstalati Modulul"
+ REINSTALL_THEME: "Reinstalaţi Tema"
+ REINSTALL_THE: "Reinstalaţi %s"
+ CONFIRM_REINSTALL: "Sunteţi sigur că doriţi să reinstalaţi această %s?"
+ REINSTALLED_SUCCESSFULLY: "%s reinstalat cu succes"
+ ERROR_REINSTALLING_THE: "Eroare la reinstalarea %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Pachet %s reinstalat cu succes"
+ REINSTALLATION_FAILED: "Reinstalarea nu a reușit"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "Versiunea instalată nu este cea mai recentă versiune. Făcând clic pe continue (continuare), veţi elimina versiunea curentă şi instala versiunea mai recent disponibilă"
+ TOOLS: "Unelte"
+ DIRECT_INSTALL: "Instalare directă"
+ NO_PACKAGE_NAME: "Numele pachetului nu este specificat"
+ PACKAGE_EXTRACTION_FAILED: "Extragerea pachetului eșuată"
+ NOT_VALID_GRAV_PACKAGE: "Nu este un pachet valid pentru Grav"
+ NAME_COULD_NOT_BE_DETERMINED: "Numele nu a putut fi determinat"
+ CANNOT_OVERWRITE_SYMLINKS: "Nu este posibilă suprascrierea legăturilor simbolice"
+ ZIP_PACKAGE_NOT_FOUND: "Pachetul ZIP nu a putut fi localizat"
+ GPM_OFFICIAL_ONLY: "Doar canalul oficial GPM"
+ GPM_OFFICIAL_ONLY_HELP: "Permite doar instalarea directă din canalul oficial GPM."
+ NO_CHILD_TYPE: "Nu există nici un tip de copil pentru această rutare rawroute"
+ SORTABLE_PAGES: "Pagini sortabile:"
+ UNSORTABLE_PAGES: "Pagini nesortabile"
+ ADMIN_SPECIFIC_OVERRIDES: "Suprascrieri spcifice Administratorului"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Ordinea de afișare a copiilor"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Ordinea în care copiii acestei pagini ar trebui să fie afișați în modul „view” al modulului de Admin"
+ PWD_PLACEHOLDER: "şir complex cel puțin 8 caractere lungime"
+ PWD_REGEX: "Parolă Regex"
+ PWD_REGEX_HELP: "În mod implicit: Parola trebuie să conţină cel puţin un număr şi o majusculă, litere mici şi cel puţin 8 sau mai multe caractere"
+ USERNAME_PLACEHOLDER: "doar caractere mici, de ex: „admin”"
+ USERNAME_REGEX: "Numele de utilizator Regex"
+ USERNAME_REGEX_HELP: "În mod implicit: Doar caractere mici, cifre, liniuţe şi linii de subliniere. 3 - 16 caractere"
+ CONTENT_PADDING: "Căptușeală pentru conținut"
+ CONTENT_PADDING_HELP: "Activează/dezactivează conţinut de căptușeală în jurul conţinutului pentru a oferi mai mult spaţiu"
+ ENABLE_AUTO_METADATA: "Auto metadate din Exif"
+ ENABLE_AUTO_METADATA_HELP: "Generează automat metadatele fişierelor de imagini cu informaţii exif"
+ 2FA_TITLE: "Autentificare dublu factor"
+ 2FA_INSTRUCTIONS: "##### Autentificare dublu factor\nAveți **2FA** activată pentru acest cont. Vă rugăm folosiți aplicația pentru **2FA** pentru a introduce **codul de 6 cifre** pentru a completa procesul de logare."
+ 2FA_REGEN_HINT: "Regenerarea acestui secret necesită actualizarea aplicației de autentificare"
+ 2FA_LABEL: "Acces Administrator"
+ 2FA_FAILED: "Codul pentru Autentificarea dublu factor este invalid, vă rugăm încercați din nou..."
+ 2FA_ENABLED: "2FA activat"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "2FA Secret"
+ 2FA_SECRET_HELP: "Scanați acest cod QR cu [aplicația de autentificare](https://learn.getgrav.org/admin-panel/2fa#apps). De asemenea este o idee bună să salvați secretul într-o locație sigură, în cazul in care aveți nevoie să reinstalați aplicația de autentificare. Verificați [documentația Grav](https://learn.getgrav.org/admin-panel/2fa) pentru mai multe informații "
+ 2FA_REGENERATE: "Regenerează"
+ FORCE_LOWERCASE_URLS: "Forțează litere mici pentru URL-uri"
+ FORCE_LOWERCASE_URLS_HELP: "În mod implicit Grav setează toate Url-urile cu litere mici. Dacă opțiunea este falsă, se pot folosi Majuscule pentru Url-uri"
+ INTL_ENABLED: "Integrarea modulului Intl"
+ INTL_ENABLED_HELP: "Utilizaţi modulul Intl PHP şi adună pentru a sorta colecțiile bazate pe UTF8"
+ VIEW_SITE_TIP: "Vizualizează site"
+ TOOLS_DIRECT_INSTALL_TITLE: "Instalare directă pentru pachete Grav"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Instalaţi pachetul prin Încărcare Directă de fișiere în format ZIP"
+ TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Puteţi instala cu uşurinţă o temă, un modulsau chiar actualizări Grav în format Zip prin această metodă. Acest pachet nu trebuie să fie înregistrat prin intermediul GPM şi vă permite să reveniți uşor la o versiune anterioară sau instalare pentru testare."
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Instalaţi pachet folosind Remote URL"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Alternativ, puteţi introduce un URL către fişierul ZIP şi instala acest fișier."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Încărcare şi instalare"
+ ROUTE_OVERRIDES: "Suprascriere Rute"
+ ROUTE_DEFAULT: "Ruta implicită"
+ ROUTE_CANONICAL: "Ruta canonică"
+ ROUTE_ALIASES: "Pseudonime pentru Rută"
+ OPEN_NEW_TAB: "Deschide în Tab Nou"
+ PAGEMEDIA_RESIZER: "> Următoarele setări se aplică imaginilor încărcate folosind 'page media'. Redimensionarea lăţime / înălţime va redimensiona automat şi proporţional o imagine dacă depăşeşte limitele stabilite în setări. Valorile min şi max pentru rezoluţie definesc gamele de dimensiune pentru imaginile încărcate. Setaţi câmpurile la 0 pentru a preveni orice manipulare."
+ SESSION_INITIALIZE: "Iniţializează sesiune"
+ SESSION_INITIALIZE_HELP: "Grav pornește o sesiune de lucru. Această caracteristică este necesară pentru a face funcțională orice interacţiune a utilizatorul de a lucra, cum ar fi autentificare, formulare etc... Modulul Admin nu este afectat de această setare."
+ STRICT_YAML_COMPAT: "Compatibilitate YAML"
+ STRICT_YAML_COMPAT_HELP: "Revine la programul de analiză Symfony 2.4 YAML în cazul în care programul de analiză Nativ sau versiunea 3.4 eșuează"
+ STRICT_TWIG_COMPAT: "Compatibilitate Twig"
+ STRICT_TWIG_COMPAT_HELP: "Permite setarea depreciată pentru a ignore Twig. Când este dezactivată, este necesar filtrul |raw pentru a transcrie codul în HTML, deoarece Twig va ignora automat"
+ SCHEDULER: "Programator"
+ SCHEDULER_INSTALL_INSTRUCTIONS: "Instrucțiuni de instalare"
+ SCHEDULER_INSTALLED_READY: "Instalat şi gata de acțiune"
+ SCHEDULER_CRON_NA: "Cron nu este disponibil"
+ SCHEDULER_NOT_ENABLED: "Nu este activat"
+ SCHEDULER_SETUP: "Setarea planificatorului"
+ SCHEDULER_INSTRUCTIONS: "Grav Scheduler vă permite să creaţi şi personalizați acțiuni. Acesta prevede o metodă pentru modulele Grav de a integra programatic şi adăuga dinamic acșiuni pentru a fi rulate periodic."
+ SCHEDULER_POST_INSTRUCTIONS: "Pentru a activa funcţionalitatea Scheduler, trebuie să adăugaţi Grav Scheduler la fişierul de crontab din sistemul dvs. Executaţi comanda de mai sus în terminal pentru a o adăuga automat. Odată salvat, reîmprospătați această pagină pentru a vedea statutul Ready."
+ SCHEDULER_JOBS: "Program personalizat de acțiuni"
+ SCHEDULER_STATUS: "Statutul planificatorului"
+ SCHEDULER_RUNAT: "Rulează la"
+ SCHEDULER_RUNAT_HELP: "Cron formatat 'la' sintaxa"
+ SCHEDULER_OUTPUT: "Fişier final"
+ SCHEDULER_OUTPUT_HELP: "Calea/numele fișierului final (începând cu rădăcina instalării Grav)"
+ SCHEDULER_OUTPUT_TYPE: "Tipul de ieşire"
+ SCHEDULER_OUTPUT_TYPE_HELP: "Adăugare la acelaşi fişier de fiecare dată când rulează sau suprascrie fişierul cu fiecare rulare"
+ SCHEDULER_EMAIL: "Adresa de e-mail"
+ SCHEDULER_EMAIL_HELP: "E-mail pentru a trimite fișierul final. Notă: necesită prestabilirea fişierului de ieşire"
+ SECURITY: "Securitate"
+ XSS_SECURITY: "XSS securitate pentru conţinut"
+ XSS_WHITELIST_PERMISSIONS: "Lista albă de permisiuni"
+ XSS_WHITELIST_PERMISSIONS_HELP: "Utilizatorii cu aceste permisiuni vor trece peste regulile XSS la salvarea conţinutului"
+ XSS_ON_EVENTS: "Filtru evenimente"
+ XSS_INVALID_PROTOCOLS: "Filtru protocoale nevalidate"
+ XSS_INVALID_PROTOCOLS_LIST: "Listă protocoale nevalidate"
+ XSS_MOZ_BINDINGS: "Legături Filter Moz"
+ XSS_HTML_INLINE_STYLES: "Filtează stiluri în HTML"
+ XSS_DANGEROUS_TAGS: "Filtrează Etichete periculoase HTML"
+ XSS_DANGEROUS_TAGS_LIST: "Listă de Etichete HTML periculoase"
+ XSS_ONSAVE_ISSUE: "Salvare nereușită: problemă XSS detectată..."
+ XSS_ISSUE: "NOTĂ: Grav a găsit probleme potenţiale de XSS în %s"
+ UPLOADS_SECURITY: "Încărcări de securitate"
+ UPLOADS_DANGEROUS_EXTENSIONS: "Extensii periculoase"
+ UPLOADS_DANGEROUS_EXTENSIONS_HELP: "Blochează aceste extensii la încărcare indiferent de tipurile MIME acceptate"
+ REPORTS: "Rapoarte"
+ LOGS: "Log-uri"
+ LOG_VIEWER_FILES: "Vizualizator de fişiere log"
+ LOG_VIEWER_FILES_HELP: "Fişiere în /logs/ care vor fi disponibile pentru vizualizare în Instrumente - log-uri. ex. \"grav' = /logs/grav.log"
+ BACKUPS_STORAGE_PURGE_TRIGGER: "Declanșatorul de ștergere definitivă ale copiilor de rezervă"
+ BACKUPS_MAX_COUNT: "Numărul maxim de copii de rezervă"
+ BACKUPS_MAX_COUNT_HELP: "0 este nelimitat"
+ BACKUPS_MAX_SPACE: "Spaţiul maxim de backup"
+ BACKUPS_MAX_RETENTION_TIME: "Perioada maximă de retenție"
+ BACKUPS_MAX_RETENTION_TIME_APPEND: "în zile"
+ BACKUPS_PROFILE_NAME: "Numele copiei de rezervă"
+ BACKUPS_PROFILE_ROOT_FOLDER: "Dosarul rădăcină"
+ BACKUPS_PROFILE_ROOT_FOLDER_HELP: "Poate fi o cale absolută sau un 'stream'"
+ BACKUPS_PROFILE_EXCLUDE_PATHS: "Exclude căile"
+ BACKUPS_PROFILE_EXCLUDE_PATHS_HELP: "Căi absolute excluse, câte una pe linie"
+ BACKUPS_PROFILE_EXCLUDE_FILES: "Excludeţi fişiere"
+ BACKUPS_PROFILE_EXCLUDE_FILES_HELP: "Specifice fişiere sau Dosare excluse, câte unul pe linie"
+ BACKUPS_PROFILE_SCHEDULE: "Activează acțiunea prestabilită planificată"
+ BACKUPS_PROFILE_SCHEDULE_AT: "Rulează acțiunea prestabilită"
+ COMMAND: "Comandă"
+ EXTRA_ARGUMENTS: "Argumente extra"
diff --git a/user/plugins/admin/languages/ru.yaml b/user/plugins/admin/languages/ru.yaml
new file mode 100644
index 0000000..d3c02e2
--- /dev/null
+++ b/user/plugins/admin/languages/ru.yaml
@@ -0,0 +1,812 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Это бета-релиз! Используете его в продакшене на свой страх и риск..."
+ ADMIN_REPORT_ISSUE: "Нашли ошибку? Пожалуйста, сообщите об этом на GitHub."
+ EMAIL_FOOTER: "Работает на Grav - Современная CMS на файлах"
+ LOGIN_BTN: "Логин"
+ LOGIN_BTN_FORGOT: "Забыл"
+ LOGIN_BTN_RESET: "Сбросить пароль"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Отправить инструкции по сбросу"
+ LOGIN_BTN_CLEAR: "Очистить форму"
+ LOGIN_BTN_CREATE_USER: "Создать пользователя"
+ LOGIN_LOGGED_IN: "Вы успешно вошли в систему"
+ LOGIN_FAILED: "Не удалось войти"
+ LOGGED_OUT: "Вы вышли из системы"
+ RESET_NEW_PASSWORD: "Пожалуйста, введите новый пароль …"
+ RESET_LINK_EXPIRED: "Время ссылки для сброса истекло, пожалуйста, повторите попытку"
+ RESET_PASSWORD_RESET: "Пароль был сброшен"
+ RESET_INVALID_LINK: "Неверная ссылка сброса пароля, пожалуйста, повторите попытку"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Инструкции для сброса пароля были высланы на ваш адрес электронной почты"
+ FORGOT_FAILED_TO_EMAIL: "Не удалось отправить инструкции по электронной почте, пожалуйста, повторите попытку позже"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Невозможно сбросить пароль для %s, не задан адрес электронной почты"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Пользователь с логином %s не существует"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Не удаётся сбросить пароль. Этот сайт не настроен для отправки электронной почты"
+ FORGOT_EMAIL_SUBJECT: "%s Запрос на восстановление пароля"
+ FORGOT_EMAIL_BODY: "
Или скопируйте следующий URL в адресную строку вашего браузера:
%2$s
С уважением,
%3$s
"
+ MANAGE_PAGES: "Управление страницами"
+ CONFIGURATION: "Настройка"
+ PAGES: "Страницы"
+ PLUGINS: "Плагины"
+ PLUGIN: "Плагин"
+ THEMES: "Темы"
+ LOGOUT: "Выход"
+ BACK: "Назад"
+ NEXT: "Далее"
+ PREVIOUS: "Ранее"
+ ADD_PAGE: "Добавить страницу"
+ ADD_MODULAR: "Добавить модульный блок"
+ MOVE: "Перенести"
+ DELETE: "Удалить"
+ UNSET: "Сброс"
+ VIEW: "Просмотр"
+ SAVE: "Сохранить"
+ NORMAL: "Обычный"
+ EXPERT: "Экспертный"
+ EXPAND_ALL: "Развернуть все"
+ COLLAPSE_ALL: "Свернуть все"
+ ERROR: "Ошибка"
+ CLOSE: "Закрыть"
+ CANCEL: "Отменить"
+ CONTINUE: "Продолжить"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Требуется подтверждение"
+ MODAL_CHANGED_DETECTED_TITLE: "Обнаружены изменения"
+ MODAL_CHANGED_DETECTED_DESC: "У вас есть несохраненные изменения. Вы уверены, что хотите выйти без сохранения?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Требуется подтверждение"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Вы уверены, что хотите удалить этот файл? Это действие не может быть отменено."
+ ADD_FILTERS: "Добавить фильтры"
+ SEARCH_PAGES: "Поиск страниц"
+ VERSION: "Версия"
+ WAS_MADE_WITH: "сделано с"
+ BY: "От"
+ UPDATE_THEME: "Обновить тему"
+ UPDATE_PLUGIN: "Обновить плагин"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "этой темы теперь доступно"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "этого плагина теперь доступно"
+ AUTHOR: "Автор"
+ HOMEPAGE: "Домашняя страница"
+ DEMO: "Демо"
+ BUG_TRACKER: "Баг-трекер"
+ KEYWORDS: "Ключевые слова"
+ LICENSE: "Лицензия"
+ DESCRIPTION: "Описание"
+ README: "Инструкция"
+ REMOVE_THEME: "Удалить тему"
+ INSTALL_THEME: "Установить тему"
+ THEME: "Тема"
+ BACK_TO_THEMES: "Назад к темам"
+ BACK_TO_PLUGINS: "Назад к плагинам"
+ CHECK_FOR_UPDATES: "Проверить обновления"
+ ADD: "Добавить"
+ CLEAR_CACHE: "Очистить кэш"
+ CLEAR_CACHE_ALL_CACHE: "Весь кэш"
+ CLEAR_CACHE_ASSETS_ONLY: "Только ресурсы"
+ CLEAR_CACHE_IMAGES_ONLY: "Только изображения"
+ CLEAR_CACHE_CACHE_ONLY: "Только кэш"
+ CLEAR_CACHE_TMP_ONLY: "Только временные файлы"
+ DASHBOARD: "Панель управления"
+ UPDATES_AVAILABLE: "Доступны обновления"
+ DAYS: "Дни"
+ UPDATE: "Обновление"
+ BACKUP: "Резервная копия"
+ BACKUPS: "Резервные копии"
+ BACKUP_NOW: "Создать резервную копию"
+ BACKUPS_STATS: "Статистика резервного копирования"
+ BACKUPS_HISTORY: "История резервного копирования"
+ BACKUPS_PURGE_CONFIG: "Очистить конфигурацию резервного копирования"
+ BACKUPS_PROFILES: "Профили резервного копирования"
+ BACKUPS_COUNT: "Количество резервных копий"
+ BACKUPS_PROFILES_COUNT: "Количество профилей"
+ BACKUPS_TOTAL_SIZE: "Занято пространства"
+ BACKUPS_NEWEST: "Самая новая резервная копия"
+ BACKUPS_OLDEST: "Самая старая резервная копия"
+ BACKUPS_PURGE: "Очистить"
+ BACKUPS_NOT_GENERATED: "Резервные копии еще не созданы..."
+ BACKUPS_PURGE_NUMBER: "Использовано %s из %s слотов резервных копий"
+ BACKUPS_PURGE_TIME: "Резервной копии осталось %s дней"
+ BACKUPS_PURGE_SPACE: "Используется %s из %s"
+ BACKUP_DELETED: "Резервная копия успешно удалена"
+ BACKUP_NOT_FOUND: "Резервная копия не найдена"
+ BACKUP_DATE: "Дата резервной копии"
+ STATISTICS: "Статистика"
+ TODAY: "Сегодня"
+ WEEK: "Неделя"
+ MONTH: "Месяц"
+ LATEST_PAGE_UPDATES: "Последние обновлённые страницы"
+ MAINTENANCE: "Техническое обслуживание"
+ UPDATED: "Обновлено"
+ MON: "Пн"
+ TUE: "Вт"
+ WED: "Ср"
+ THU: "Чт"
+ FRI: "Пт"
+ SAT: "Сб"
+ SUN: "Вс"
+ COPY: "Копировать"
+ EDIT: "Редактировать"
+ CREATE: "Создать"
+ GRAV_ADMIN: "Админ панель Grav"
+ GRAV_OFFICIAL_PLUGIN: "Официальный плагин Grav"
+ GRAV_OFFICIAL_THEME: "Официальная тема Grav"
+ PLUGIN_SYMBOLICALLY_LINKED: "Этот плагин символически связан. Обновления не будут найдены."
+ THEME_SYMBOLICALLY_LINKED: "Эта тема символически связана. Обновления не будут найдены."
+ REMOVE_PLUGIN: "Удалить плагин"
+ INSTALL_PLUGIN: "Установить плагин"
+ AVAILABLE: "Доступен"
+ INSTALLED: "Установлен"
+ INSTALL: "Установить"
+ ACTIVE_THEME: "Активная тема"
+ SWITCHING_TO: "Переключить"
+ SWITCHING_TO_DESCRIPTION: "При переключении на другую тему нет никакой гарантии того, что поддерживаются все макеты страниц. Возможно, это приведет к ошибкам при попытке загрузки указанных страниц."
+ SWITCHING_TO_CONFIRMATION: "Хотите продолжить и переключится на тему"
+ CREATE_NEW_USER: "Создать нового пользователя"
+ REMOVE_USER: "Удалить пользователя"
+ ACCESS_DENIED: "Доступ запрещен"
+ ACCOUNT_NOT_ADMIN: "ваша учетная запись не имеет прав администратора"
+ PHP_INFO: "Информация о PHP"
+ INSTALLER: "Установщик"
+ AVAILABLE_THEMES: "Доступные темы"
+ AVAILABLE_PLUGINS: "Доступные плагины"
+ INSTALLED_THEMES: "Установленные темы"
+ INSTALLED_PLUGINS: "Установленные плагины"
+ BROWSE_ERROR_LOGS: "Просмотр журналов ошибок"
+ SITE: "Сайт"
+ INFO: "Информация"
+ SYSTEM: "Система"
+ USER: "Пользователь"
+ ADD_ACCOUNT: "Добавить учетную запись"
+ SWITCH_LANGUAGE: "Переключить язык"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Плагин успешно включён"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Плагин успешно отключён"
+ SUCCESSFULLY_CHANGED_THEME: "Успешно изменена тема по умолчанию"
+ INSTALLATION_FAILED: "Ошибка установки"
+ INSTALLATION_SUCCESSFUL: "Установка завершена успешно"
+ UNINSTALL_FAILED: "Удаление не удалось"
+ UNINSTALL_SUCCESSFUL: "Удаление успешно"
+ SUCCESSFULLY_SAVED: "Сохранение успешно"
+ SUCCESSFULLY_COPIED: "Копирование успешно"
+ REORDERING_WAS_SUCCESSFUL: "Изменение порядка прошло успешно"
+ SUCCESSFULLY_DELETED: "Успешно удалено"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Язык подключён успешно"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "У вас недостаточно прав доступа для задачи"
+ CACHE_CLEARED: "Кэш очищен"
+ METHOD: "Метод"
+ ERROR_CLEARING_CACHE: "Ошибка очистки кэша"
+ AN_ERROR_OCCURRED: "Произошла ошибка"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Резервная копия готова для загрузки"
+ DOWNLOAD_BACKUP: "Скачать"
+ PAGES_FILTERED: "Фильтр страниц"
+ NO_PAGE_FOUND: "Страница не найдена"
+ INVALID_PARAMETERS: "Неверные параметры"
+ NO_FILES_SENT: "Файлы не отправлены"
+ EXCEEDED_FILESIZE_LIMIT: "Превышен заданный в конфигурации PHP предельный размер файла"
+ EXCEEDED_POSTMAX_LIMIT: "Превышено значение post_max_size"
+ UNKNOWN_ERRORS: "Неизвестная ошибка"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Превышен заданный в конфигурации Grav предельный размер файла"
+ UNSUPPORTED_FILE_TYPE: "Неподдерживаемый тип файла"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Не удалось переместить загруженный файл."
+ FILE_UPLOADED_SUCCESSFULLY: "Файл успешно загружен"
+ FILE_DELETED: "Файл удалён"
+ FILE_COULD_NOT_BE_DELETED: "Файл не может быть удалён"
+ FILE_NOT_FOUND: "Файл не найден"
+ NO_FILE_FOUND: "Файлы не найдены"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav успешно обновлён на"
+ GRAV_UPDATE_FAILED: "Ошибка обновления Grav"
+ EVERYTHING_UPDATED: "Все обновлено"
+ UPDATES_FAILED: "Обновление не удалось"
+ AVATAR_BY: "Аватар"
+ AVATAR_UPLOAD_OWN: "Или загрузите свой..."
+ LAST_BACKUP: "Последняя резервная копия"
+ FULL_NAME: "Полное имя"
+ USERNAME: "Имя пользователя"
+ EMAIL: "Email"
+ USERNAME_EMAIL: "Логин или Email"
+ PASSWORD: "Пароль"
+ PASSWORD_CONFIRM: "Подтвердить пароль"
+ TITLE: "Заголовок"
+ LANGUAGE: "Язык"
+ ACCOUNT: "Учетная запись"
+ EMAIL_VALIDATION_MESSAGE: "Адрес электронной почты должен быть действительным"
+ PASSWORD_VALIDATION_MESSAGE: "Пароль должен содержать хотя бы одну цифру, одну заглавную и строчную букву, и по крайней мере 8 или более символов"
+ LANGUAGE_HELP: "Выберите предпочитаемый язык"
+ MEDIA: "Медиа"
+ DEFAULTS: "По умолчанию"
+ SITE_TITLE: "Заголовок сайта"
+ SITE_TITLE_PLACEHOLDER: "Название сайта"
+ SITE_TITLE_HELP: "Название сайта по умолчанию, часто используется в темах оформления."
+ SITE_DEFAULT_LANG: "Язык по умолчанию"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Язык, используемый по умолчанию в теге в шаблонах темы."
+ SITE_DEFAULT_LANG_HELP: "Язык, используемый по умолчанию в теге в шаблонах темы."
+ DEFAULT_AUTHOR: "Автор по умолчанию"
+ DEFAULT_AUTHOR_HELP: "Имя автора по умолчанию, часто используется в темах оформления или содержимом страниц."
+ DEFAULT_EMAIL: "Email по умолчанию"
+ DEFAULT_EMAIL_HELP: "Адрес электронной почты по умолчанию, используется для создания ссылки на почту в темах или на страницах."
+ TAXONOMY_TYPES: "Типы таксономии"
+ TAXONOMY_TYPES_HELP: "Типы таксономии должны быть определены здесь, если хотите использовать их на страницах сайта"
+ PAGE_SUMMARY: "Анонс"
+ ENABLED: "Включено"
+ ENABLED_HELP: "Показывать анонс (содержание страницы до разделителя)."
+ 'YES': "Да"
+ 'NO': "Нет"
+ SUMMARY_SIZE: "Размер анонса"
+ SUMMARY_SIZE_HELP: "Количество символов страницы, выводимых в анонсе"
+ FORMAT: "Формат"
+ FORMAT_HELP: "Короткий = использовать первое вхождение разделителя или размер; Длинный = разделитель игнорируется."
+ SHORT: "Короткий"
+ LONG: "Длинный"
+ DELIMITER: "Разделитель"
+ DELIMITER_HELP: "Разделитель для функции «Читать далее...» (по умолчанию '===')"
+ METADATA: "Метаданные"
+ METADATA_HELP: "По умолчанию значения метаданных, которые будут отображаться на каждой странице, если это не определено у конкретной страницы."
+ NAME: "Имя"
+ CONTENT: "Содержание"
+ SIZE: "Размер"
+ ACTION: "Действие"
+ REDIRECTS_AND_ROUTES: "Перенаправления и маршруты"
+ CUSTOM_REDIRECTS: "Пользовательские перенаправления"
+ CUSTOM_REDIRECTS_HELP: "Маршрутизация для перенаправления на другие страницы. Действует замена стандартных регулярных выражений"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/your/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/your/redirect"
+ CUSTOM_ROUTES: "Нестандартная маршрутизация"
+ CUSTOM_ROUTES_HELP: "маршруты к псевдониму на другие страницы. Доступна замена стандартными регулярными выражениями"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/your/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/your/route"
+ FILE_STREAMS: "Файловые потоки"
+ DEFAULT: "По умолчанию"
+ PAGE_MEDIA: "Вложения"
+ OPTIONS: "Опции"
+ PUBLISHED: "Опубликовано"
+ PUBLISHED_HELP: "По умолчанию страница опубликована, если явно не указано published: false или publish_date в будущем, unpublish_date в прошлом"
+ DATE: "Дата"
+ DATE_HELP: "Переменная даты позволяет специально установить дату, связанную с этой страницей."
+ PUBLISHED_DATE: "Дата публикации"
+ PUBLISHED_DATE_HELP: "Можете указать дату автоматической публикации страницы."
+ UNPUBLISHED_DATE: "Дата снятия с публикации"
+ UNPUBLISHED_DATE_HELP: "Можете указать дату автоматического снятия с публикации."
+ ROBOTS: "Роботы"
+ TAXONOMIES: "Таксономии"
+ TAXONOMY: "Таксономия"
+ ADVANCED: "Дополнительно"
+ SETTINGS: "Настройки"
+ FOLDER_NUMERIC_PREFIX: "Числовой префикс папки"
+ FOLDER_NUMERIC_PREFIX_HELP: "Числовой префикс, позволяет упорядочить страницы вручную, и подразумевает видимость страницы"
+ FOLDER_NAME: "Имя папки"
+ FOLDER_NAME_HELP: "Имя папки, которое будут храниться в файловой системе для этой страницы."
+ PARENT: "Родитель"
+ DEFAULT_OPTION_ROOT: "- Корень -"
+ DEFAULT_OPTION_SELECT: "- Выбрать -"
+ DISPLAY_TEMPLATE: "Шаблон отображения"
+ DISPLAY_TEMPLATE_HELP: "Тип страницы, который определяет, какая ветка шаблона отображает страницу."
+ BODY_CLASSES: "Класс страницы"
+ ORDERING: "Порядок"
+ PAGE_ORDER: "Порядок страниц"
+ OVERRIDES: "Переопределения"
+ MENU: "Меню"
+ MENU_HELP: "Строка, которая будет использоваться в меню. Если не задана, будет использоваться заголовок."
+ SLUG: "Псевдоним"
+ SLUG_HELP: "Эта переменная позволяет установить псевдоним, часть URL-адреса страницы"
+ SLUG_VALIDATE_MESSAGE: "Псевдоним должен состоять только из строчных алфавитно-цифровых символов и дефисов"
+ PROCESS: "Процесс"
+ PROCESS_HELP: "Контролирует как обрабатываются страницы. Может быть установлен на странице, а не глобально"
+ DEFAULT_CHILD_TYPE: "Тип вложенного элемента"
+ USE_GLOBAL: "Использовать глобальный"
+ ROUTABLE: "Маршрутизируемая"
+ ROUTABLE_HELP: "Если страница доступна из URL"
+ CACHING: "Кэширование"
+ VISIBLE: "Видимая"
+ VISIBLE_HELP: "Определяет, отображается ли страница в навигации."
+ DISABLED: "Отключено"
+ ITEMS: "Элементы"
+ ORDER_BY: "Сортировать по"
+ ORDER: "Порядок"
+ FOLDER: "Папка"
+ ASCENDING: "По возрастанию"
+ DESCENDING: "По убыванию"
+ ADD_MODULAR_CONTENT: "Добавить модульное содержимое"
+ PAGE_TITLE: "Заголовок страницы"
+ PAGE_TITLE_HELP: "Заголовок текущей страницы"
+ PAGE: "Страница"
+ MODULAR_TEMPLATE: "Модульный шаблон"
+ FRONTMATTER: "Вступление"
+ FILENAME: "Имя файла"
+ PARENT_PAGE: "Родительская страница"
+ HOME_PAGE: "Главная страница"
+ HOME_PAGE_HELP: "Страница, которую Grav будет использовать по умолчанию в качестве главной."
+ DEFAULT_THEME: "Тема по умолчанию"
+ DEFAULT_THEME_HELP: "Шаблон оформления, используемый по умолчанию."
+ TIMEZONE: "Часовой пояс"
+ TIMEZONE_HELP: "Изменить значение часового пояса, используемого сервером по умолчанию."
+ SHORT_DATE_FORMAT: "Краткий формат даты"
+ SHORT_DATE_FORMAT_HELP: "Укажите короткий формат даты, который может использоваться в темах оформления."
+ LONG_DATE_FORMAT: "Длинный формат даты"
+ LONG_DATE_FORMAT_HELP: "Укажите длинный формат даты, который может использоваться в темах оформления."
+ DEFAULT_ORDERING: "Порядок по умолчанию"
+ DEFAULT_ORDERING_HELP: "Страницы в списке будут выводиться с учетом этого порядка, если он не переопределен."
+ DEFAULT_ORDERING_DEFAULT: "По умолчанию - в зависимости от имени папки"
+ DEFAULT_ORDERING_FOLDER: "Папка - в зависимости от приставки имени папки"
+ DEFAULT_ORDERING_TITLE: "Заголовок - в зависимости от названия поля заголовка"
+ DEFAULT_ORDERING_DATE: "Дата - в зависимости от поля даты"
+ DEFAULT_ORDER_DIRECTION: "Порядок сортировки по умолчанию"
+ DEFAULT_ORDER_DIRECTION_HELP: "Направление сортировки страниц в списке материалов."
+ DEFAULT_PAGE_COUNT: "Количество страниц по умолчанию"
+ DEFAULT_PAGE_COUNT_HELP: "Максимальное количество страниц в списке по умолчанию."
+ DATE_BASED_PUBLISHING: "Публикация на основе даты"
+ DATE_BASED_PUBLISHING_HELP: "Автоматически (не)публикует посты на основе их даты."
+ EVENTS: "События"
+ EVENTS_HELP: "Включить или отключить специфические события. Отключение этих событий может привести к ошибкам в работе плагинов."
+ REDIRECT_DEFAULT_ROUTE: "Перенаправить маршрут по умолчанию"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Автоматическое перенаправление страниц согласно маршруту"
+ LANGUAGES: "Языки"
+ SUPPORTED: "Поддерживаемые языки"
+ SUPPORTED_HELP: "Укажите необходимые вам языки через запятую (например 'en,ru,uk')"
+ TRANSLATIONS_ENABLED: "Поддержка перевода"
+ TRANSLATIONS_ENABLED_HELP: "Поддержка перевода в Grav, плагинах и расширениях"
+ TRANSLATIONS_FALLBACK: "Резервный перевод"
+ TRANSLATIONS_FALLBACK_HELP: "Использовать резервный вариант перевода, если активного языка не существует"
+ ACTIVE_LANGUAGE_IN_SESSION: "Активный язык в сессии"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Хранить активный язык в сессии пользователя"
+ HTTP_HEADERS: "HTTP заголовки"
+ EXPIRES: "Срок действия"
+ EXPIRES_HELP: "Устанавливает заголовок Expires. Значение в секундах."
+ CACHE_CONTROL: "HTTP кэш-контроль"
+ CACHE_CONTROL_HELP: "Установите допустимое значение переменной кэш-контроля сервера из списка: `no-cache, no-store, must-revalidate`."
+ LAST_MODIFIED: "Дата последнего изменения"
+ LAST_MODIFIED_HELP: "Устанавливает заголовок последнего изменения, который может помочь оптимизировать кэширование прокси и браузера"
+ ETAG: "ETag"
+ ETAG_HELP: "Устанавливает заголовок ETag, чтобы помочь определить, когда страница была изменена."
+ VARY_ACCEPT_ENCODING: "Варьировать допустимую кодировку"
+ VARY_ACCEPT_ENCODING_HELP: "Установите заголовок `Vary: Accept Encoding`, чтобы избежать проблем при работе с общедоступными прокси-серверами и CDN, которые не распознают наличие заголовка Content-Encoding."
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Расширенный Markdown"
+ MARKDOWN_EXTRA_HELP: "Включение поддержки Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Экранирование HTML-элементов (синтаксис fences) в Markdown Extra"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Избегать HTML-элементов в Markdown Extra для синтаксиса fences"
+ AUTO_LINE_BREAKS: "Авто разрывы строк"
+ AUTO_LINE_BREAKS_HELP: "Включить поддержку автоматических разрывов строк в markdown"
+ AUTO_URL_LINKS: "Авто URL ссылки"
+ AUTO_URL_LINKS_HELP: "Включить автоматическое преобразование URL в HTML-код гиперссылки."
+ ESCAPE_MARKUP: "Экранирование разметки"
+ ESCAPE_MARKUP_HELP: "Избегать тегов разметки в HTML объектах"
+ CACHING_HELP: "Глобальный выключатель для включения/отключения кэширования Grav"
+ CACHE_CHECK_METHOD: "Метод проверки кэша"
+ CACHE_CHECK_METHOD_HELP: "Выберите метод, который Grav использует для проверки, были ли файлы страниц изменены."
+ CACHE_DRIVER: "Драйвер кэширования"
+ CACHE_DRIVER_HELP: "Выберите метод кэширования, который должен использоваться Grav. 'Auto Detect' - попытается определить лучший метод самостоятельно"
+ CACHE_PREFIX: "Префикс кэша"
+ CACHE_PREFIX_HELP: "Идентификатор для части ключа Grav. Не изменяйте, если не знаете, к чему это приведет."
+ CACHE_PREFIX_PLACEHOLDER: "Производный от базового URL (переопределите, введя произвольную строку)"
+ CACHE_PURGE_JOB: "Запустить запланированную очистку"
+ CACHE_PURGE_JOB_HELP: "Посредством планировщика можно периодически очищать старые папки кэша файлов Doctrine"
+ CACHE_CLEAR_JOB: "Запустить запланированную очистку"
+ CACHE_CLEAR_JOB_HELP: "С помощью планировщика можно периодически очищать кэш Grav"
+ CACHE_JOB_TYPE: "Тип работы кэша"
+ CACHE_JOB_TYPE_HELP: "Очистить либо с помощью 'стандартной' очистки кэша папок, либо 'все' папки"
+ CACHE_PURGE: "Очистить старый кэш"
+ LIFETIME: "Время жизни"
+ LIFETIME_HELP: "Задает время жизни кэша в секундах. 0 = бесконечно."
+ GZIP_COMPRESSION: "Сжатие Gzip"
+ GZIP_COMPRESSION_HELP: "Включить сжатие Gzip в Grav для увеличения скорости загрузки страниц."
+ TWIG_TEMPLATING: "Шаблонизация Twig"
+ TWIG_CACHING: "Кэширование Twig"
+ TWIG_CACHING_HELP: "Управление механизмом кэширования Twig. Оставьте его включённым для обеспечения лучшей производительности."
+ TWIG_DEBUG: "Отладка Twig"
+ TWIG_DEBUG_HELP: "Позволяет не загружать расширение Twig Debugger."
+ DETECT_CHANGES: "Обнаружение изменений"
+ DETECT_CHANGES_HELP: "Twig автоматически перекомпилирует кэш Twig, если обнаружит какие-либо изменения в шаблонах Twig"
+ AUTOESCAPE_VARIABLES: "Экранирование переменных"
+ AUTOESCAPE_VARIABLES_HELP: "Автоматическое экранирование всех используемых переменных. Это скорей всего нарушит работу сайта."
+ ASSETS: "Ресурсы"
+ CSS_PIPELINE: "CSS конвейер"
+ CSS_PIPELINE_HELP: "Позволяет объединить несколько CSS файлов в один"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Включать внешние ресурсы в CSS конвейер"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Внешние URL-адреса иногда имеют связанные ссылки на файлы и не могут быть в конвейере"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "CSS конвейер рендерит первым"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Рендер CSS конвейера происходит до остальных CSS связей, которые не включены"
+ CSS_MINIFY: "Минимизировать CSS"
+ CSS_MINIFY_HELP: "Минимизировать CSS файлы во время объединения"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "Минимизировать CSS (переопределение для Windows)"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Минимизировать переопределение для платформ Windows. Отключено по умолчанию из-за ThreadStackSize."
+ CSS_REWRITE: "Переписать CSS"
+ CSS_REWRITE_HELP: "Переписать любые CSS относительные URL-адреса во время объединения"
+ JAVASCRIPT_PIPELINE: "Объединение JavaScript"
+ JAVASCRIPT_PIPELINE_HELP: "Объединение нескольких JS файлов в один"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Включать внешние ресурсы в JS пайплайн"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Внешние URL-адреса иногда имеют относительные ссылки на файлы и не могут быть в пайплайне"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Рендер JS пайплайна сначала"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Рендер JS пайплайна до остальных JS связей, которые не включены"
+ JAVASCRIPT_MINIFY: "Минимизировать JavaScript"
+ JAVASCRIPT_MINIFY_HELP: "Минимизировать в JS во время объединения"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Включить временные метки по активам"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Включить временные метки активов"
+ COLLECTIONS: "Коллекции"
+ ERROR_HANDLER: "Обработчик ошибок"
+ DISPLAY_ERRORS: "Выводить ошибки"
+ DISPLAY_ERRORS_HELP: "Отобразить полную цепочку стилей при ошибке на странице"
+ LOG_ERRORS: "Логи ошибок"
+ LOG_ERRORS_HELP: "Логи ошибок находятся в папке /logs"
+ LOG_HANDLER: "Обработчик логов"
+ LOG_HANDLER_HELP: "Где хранить логи"
+ SYSLOG_FACILITY: "Категория syslog"
+ SYSLOG_FACILITY_HELP: "Категория syslog для вывода"
+ DEBUGGER: "Отладчик"
+ DEBUGGER_HELP: "Включите отладчик Grav и после параметров настройки"
+ DEBUG_TWIG: "Отладчик Twig"
+ DEBUG_TWIG_HELP: "Включите отладчик шаблонов Twig"
+ SHUTDOWN_CLOSE_CONNECTION: "Завершение открытых соединений"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Закройте соединение до вызова onShutdown(). ложно для отладки"
+ DEFAULT_IMAGE_QUALITY: "Качество изображений по умолчанию"
+ DEFAULT_IMAGE_QUALITY_HELP: "Качество изображения по умолчанию для использования при повторной выборки или кэширования изображений (85%)"
+ CACHE_ALL: "Кэшировать все картинки"
+ CACHE_ALL_HELP: "Выполните все изображения через систему кэша Grav, даже если у них нет взаимодействия диском"
+ IMAGES_DEBUG: "Отладка водяного знака изображения"
+ IMAGES_DEBUG_HELP: "Показать накладку над изображениями с указанием глубины пикселя изображения при работе с сеткой"
+ IMAGES_SEOFRIENDLY: "ЧПУ имена изображений"
+ IMAGES_SEOFRIENDLY_HELP: "Если включено, сначала отображается имя изображения, а потом небольшой хэш для отражения обрабатываемых операций"
+ UPLOAD_LIMIT: "Лимит загрузки файла"
+ UPLOAD_LIMIT_HELP: "Установите максимальный размер в байтах для загрузки (0 безлимита)"
+ ENABLE_MEDIA_TIMESTAMP: "Включить временные метки на медиа"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Добавляет метку на основе даты последнего изменения каждого элемента в медиа"
+ SESSION: "Сессия"
+ SESSION_ENABLED_HELP: "Включить поддержку сессий в рамках Grav"
+ TIMEOUT: "Время ожидания"
+ TIMEOUT_HELP: "Устанавливает тайм-аут сеанса в секундах"
+ SESSION_NAME_HELP: "Идентификатор используется для формирования имени сессионной куки"
+ SESSION_UNIQUENESS: "Уникальная строка"
+ SESSION_UNIQUENESS_HELP: "MD5 хэш корневого пути Grav, например `GRAV_ROOT` (по умолчанию) или на основе случайной строки `security.salt`."
+ ABSOLUTE_URLS: "Абсолютный путь"
+ ABSOLUTE_URLS_HELP: "Использование абсолютных или относительных URL-адресов для переменной `base_url`."
+ PARAMETER_SEPARATOR: "Разделитель параметров"
+ PARAMETER_SEPARATOR_HELP: "Разделитель для передаваемых параметров, которые могут быть изменены для Apache на Windows."
+ TASK_COMPLETED: "Задача завершена"
+ EVERYTHING_UP_TO_DATE: "Всё актуально"
+ UPDATES_ARE_AVAILABLE: "обновления доступны"
+ IS_AVAILABLE_FOR_UPDATE: "доступно для обновления"
+ IS_NOW_AVAILABLE: "теперь доступно"
+ CURRENT: "Текущий"
+ UPDATE_GRAV_NOW: "Обновить Grav сейчас"
+ GRAV_SYMBOLICALLY_LINKED: "Grav символично связаны. Обновление не будет доступно"
+ UPDATING_PLEASE_WAIT: "Обновление... Пожалуйста, подождите, загрузка"
+ OF_THIS: "этого"
+ OF_YOUR: "из ваших"
+ HAVE_AN_UPDATE_AVAILABLE: "есть доступное обновление"
+ SAVE_AS: "Сохранить как"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Хотите удалить эту страницу и все вложенные? Если страница переведена на другие языки, эти переводы будут сохранены и должны быть удалены отдельно. В противном случае папка страницы будет удалена вместе со своими подстраницами. Это действие не может быть отменено."
+ AND: "и"
+ UPDATE_AVAILABLE: "Доступно обновление"
+ METADATA_KEY: "Ключ (например: 'Ключевые слова')"
+ METADATA_VALUE: "Значение (например: 'Blog, Grav')"
+ USERNAME_HELP: "Имя пользователя должно быть от 3 до 16 символов, в том числе строчных букв, цифр, подчеркивания и дефиса. Прописные буквы, пробелы и специальные символы не допускаются"
+ FULLY_UPDATED: "Полностью обновлено"
+ SAVE_LOCATION: "Расположение"
+ PAGE_FILE: "Шаблон страницы"
+ PAGE_FILE_HELP: "Название файла шаблона страницы, используемого для отображения содержимого"
+ NO_USER_ACCOUNTS: "Учетные записи не найдены, пожалуйста, создайте первую запись..."
+ NO_USER_EXISTS: "Локальный пользователь для этой учетной записи не существует, невозможно сохранить..."
+ REDIRECT_TRAILING_SLASH: "Перенаправление замыкающей слэш"
+ REDIRECT_TRAILING_SLASH_HELP: "Выполните 301 редирект на замыкающий слэш."
+ DEFAULT_DATE_FORMAT: "Формат даты"
+ DEFAULT_DATE_FORMAT_HELP: "Формат даты страницы, используемый в Grav. По умолчанию Grav пытается самостоятельно определить правильный формат даты, однако можно задать нужный формат вручную с помощью соответствующего синтаксиса (например: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Определить автоматически"
+ IGNORE_FILES: "Игнорировать файлы"
+ IGNORE_FILES_HELP: "Файлы, которые будут проигнорированы при обработке страниц."
+ IGNORE_FOLDERS: "Игнорировать папки"
+ IGNORE_FOLDERS_HELP: "Папки, которые будут проигнорированы при обработке страниц."
+ HIDE_EMPTY_FOLDERS: "Скрыть пустые папки"
+ HIDE_EMPTY_FOLDERS_HELP: "Если в папке нет .md файла, она должна быть скрыта в навигации, а также недоступна для чтения"
+ HTTP_ACCEPT_LANGUAGE: "Определять язык браузера"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Попробуйте разрешить установку языка на основе 'http_accept_language' тега заголовка в браузере пользователя."
+ OVERRIDE_LOCALE: "Переопределение локали"
+ OVERRIDE_LOCALE_HELP: "Переопределение языковой локали в PHP на основе текущего языка."
+ REDIRECT: "Страница редиректа"
+ REDIRECT_HELP: "Введите адрес страницы или внешний URL для страницы сайта, чтобы перенаправить, например, '/some/route' или 'http://somesite.com'"
+ PLUGIN_STATUS: "Статус плагина"
+ INCLUDE_DEFAULT_LANG: "Включить язык по умолчанию"
+ INCLUDE_DEFAULT_LANG_HELP: "Все URL-адреса будут предваряться приставкой языка. Например, `/en/blog/my-post`."
+ PAGES_FALLBACK_ONLY: "Только резервные страницы"
+ PAGES_FALLBACK_ONLY_HELP: "Только 'запасной вариант' для поиска содержимого страницы на поддерживаемых языках. По умолчанию используется любой найденный язык, если отсутствует активный язык"
+ ALLOW_URL_TAXONOMY_FILTERS: "URL для фильтров таксономии"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Базовая страница для фильтров`/taxonomy:value`."
+ REDIRECT_DEFAULT_CODE: "Перенаправление по умолчанию"
+ REDIRECT_DEFAULT_CODE_HELP: "Статус заголовка HTTP при перенаправлении URL."
+ IGNORE_HIDDEN: "Игнорировать скрытые"
+ IGNORE_HIDDEN_HELP: "Игнорировать все скрытые файлы и папки"
+ WRAPPED_SITE: "Завернутый сайт"
+ WRAPPED_SITE_HELP: "Сообщает плагину или теме оформления, что Grav обернут в другую платформу."
+ FALLBACK_TYPES: "Разрешенные резервные типы"
+ FALLBACK_TYPES_HELP: "Разрешенные типы файлов, которые могут быть найдены, если обратиться через маршрутизатор страниц"
+ INLINE_TYPES: "Встроенные типы запасных вариантов"
+ INLINE_TYPES_HELP: "Список типов файлов, которые должны отображаться, как строенные, а не загружаться"
+ APPEND_URL_EXT: "Окончание URL-адресов"
+ APPEND_URL_EXT_HELP: "Будет добавлено пользовательское расширение URL страницы. Обратите внимание, что Grav будет искать шаблон в формате `..twig`"
+ PAGE_MODES: "Режимы страницы"
+ PAGE_TYPES: "Типы страницы"
+ PAGE_TYPES_HELP: "Определяет типы страниц, которые Grav поддерживает, а также порядок, какой тип значения должен вернуться назад, если запрос является двусмысленным"
+ ACCESS_LEVELS: "Уровни доступа"
+ GROUPS: "Группы"
+ GROUPS_HELP: "Список групп пользователей, входящих в"
+ ADMIN_ACCESS: "Доступ администратора"
+ SITE_ACCESS: "Доступ сайта"
+ INVALID_SECURITY_TOKEN: "Неверный маркер безопасности"
+ ACTIVATE: "Активировать"
+ TWIG_UMASK_FIX: "Исправление Umask (0755 -> 0775)"
+ TWIG_UMASK_FIX_HELP: "По умолчанию Twig создает кэшированные файлы с правами 0755, исправить переключатели на 0775"
+ CACHE_PERMS: "Права кэша"
+ CACHE_PERMS_HELP: "По умолчанию права папки кэша. Обычно 0755 или 0775 в зависимости от настроек сервера"
+ REMOVE_SUCCESSFUL: "Успешно удалено"
+ REMOVE_FAILED: "Не удалось удалить"
+ HIDE_HOME_IN_URLS: "Убрать путь к главной странице из адресов дочерних"
+ HIDE_HOME_IN_URLS_HELP: "Все дочерние страницы внутри главной не будут содержать в адресах маршрутизатор главной (например, вместо /blog/mypage будет отображаться просто /mypage)"
+ TWIG_FIRST: "Обрабатывать Twig в первую очередь"
+ TWIG_FIRST_HELP: "Если включали обработку страницы Twig, то можно сконфигурировать Twig, чтобы обработать прежде или после markdown"
+ SESSION_SECURE: "Безопасный"
+ SESSION_SECURE_HELP: "Если включено, указывает, что соединение для этого cookie должна быть по зашифрованной передаче. ПРЕДУПРЕЖДЕНИЕ: Включите это только на сайтах, которые работают исключительно на HTTPS"
+ SESSION_HTTPONLY: "Только HTTP"
+ SESSION_HTTPONLY_HELP: "Если Да, то куки должны быть использованы только по протоколу HTTP, и модификация JavaScript не допускается"
+ REVERSE_PROXY: "Обратный прокси-сервер"
+ REVERSE_PROXY_HELP: "Включить, если находитесь за обратным прокси и испытываете проблемы с URL-адресов, содержащих некорректные порты"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Неверный формат вступления, не удалось сохранить"
+ ADD_FOLDER: "Добавить папку"
+ PROXY_URL: "Адрес прокси"
+ PROXY_URL_HELP: "Введите адрес прокси или IP-адрес и номер порта"
+ NOTHING_TO_SAVE: "Нечего сохранять"
+ FILE_ERROR_ADD: "Произошла ошибка при попытке добавить файл"
+ FILE_ERROR_UPLOAD: "Произошла ошибка при попытке загрузить файл"
+ FILE_UNSUPPORTED: "Неподдерживаемый тип файла"
+ ADD_ITEM: "Добавить элемент"
+ FILE_TOO_LARGE: "Файл слишком большой, чтобы быть загруженным, максимально допустимый размер %s согласно настройке PHP. Увеличте значение параметра настройки PHP `post_max_size`"
+ INSTALLING: "Установка"
+ LOADING: "Загрузка.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Для начала должны быть удовлетворены следующие зависимости:"
+ ERROR_INSTALLING_PACKAGES: "Ошибка при установке пакетов"
+ INSTALLING_DEPENDENCIES: "Установка зависимостей..."
+ INSTALLING_PACKAGES: "Установка пакетов.."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Пакеты успешно установлены."
+ READY_TO_INSTALL_PACKAGES: "Всё готово для установки пакетов"
+ PACKAGES_NOT_INSTALLED: "Пакеты не установлены"
+ PACKAGES_NEED_UPDATE: "Пакеты уже установлены, но их версии слишком старые"
+ PACKAGES_SUGGESTED_UPDATE: "Пакеты уже установлены и их версии в порядке, но они будут обновлены, чтобы использовать последние версии"
+ REMOVE_THE: "Удалить %s"
+ CONFIRM_REMOVAL: "Хотите удалить %s?"
+ REMOVED_SUCCESSFULLY: "%s успешно удалён"
+ ERROR_REMOVING_THE: "Ошибка удаления %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s требует следующие зависимости, которые не нужны в других установленных пакетах. Если не используете их, можно удалить их прямо отсюда."
+ READY_TO_UPDATE_PACKAGES: "Всё готово для обновления пакетов"
+ ERROR_UPDATING_PACKAGES: "Ошибка при обновлении пакетов"
+ UPDATING_PACKAGES: "Обновление пакетов.."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Пакеты успешно обновлены."
+ UPDATING: "Обновление"
+ GPM_RELEASES: "Релизы GPM"
+ GPM_RELEASES_HELP: "Выберите вариант «Testing» для установки бета-релизов или тестовых версий"
+ GPM_METHOD: "Метод удаленного обновления"
+ GPM_METHOD_HELP: "При использовании значения «Авто» Grav определит, доступна ли функция fopen и использует её, в противном случае будет использована cURL. Чтобы принудительно использовать один из вариантов, укажите его в настройках."
+ GPM_VERIFY_PEER: "Удаленная проверка пиров (SSL)"
+ GPM_VERIFY_PEER_HELP: "Некоторые провайдеры не могут проверить подлинность удалённого узла getgrav.org. Если это так, отключение этой настройки может помочь."
+ AUTO: "Авто"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Стабильная версия"
+ TESTING: "Тестирование"
+ FRONTMATTER_PROCESS_TWIG: "Обрабатывать Twig в обобщенных страницах"
+ FRONTMATTER_PROCESS_TWIG_HELP: "При включении вы можете использовать конфигурационные переменные Twig в обобщенных страницах"
+ FRONTMATTER_IGNORE_FIELDS: "Игнорировать обобщенные поля"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Некоторые обобщенные поля могут содержать Twig, но не должны быть обработаны как «формы»"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Пакет %s успешно установлен"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Установка сортировки родителя, изменение порядка отключено"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Страница не отображаема, изменение порядка отключено"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Сортировка через админ-панель не поддерживается, поскольку используется более 200 потомков"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "На этой странице отключен порядок, поскольку Числовой префикс папки не включен"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "Примечание: добавление файлов невозможно, пока вы не сохраните страницу. Кликните «Сохранить» в верхней части админки."
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "Примечание: страница должна быть сохранена перед загрузкой файлов."
+ DROP_FILES_HERE_TO_UPLOAD: "Переместите файлы сюда или нажмите на эту область"
+ INSERT: "Вставить"
+ UNDO: "Отменить"
+ REDO: "Повторить"
+ HEADERS: "Заголовки"
+ BOLD: "Жирный"
+ ITALIC: "Курсив"
+ STRIKETHROUGH: "Перечеркнутый"
+ SUMMARY_DELIMITER: "Разделитель"
+ LINK: "Ссылка"
+ IMAGE: "Изображение"
+ BLOCKQUOTE: "Цитата"
+ UNORDERED_LIST: "Маркированный список"
+ ORDERED_LIST: "Нумерованный список"
+ EDITOR: "Редактор"
+ PREVIEW: "Просмотреть"
+ FULLSCREEN: "Полноэкранный режим"
+ MODULAR: "Модульная"
+ MODULAR_SETUP: "Модульная настройка"
+ NON_ROUTABLE: "Немаршрутизируемая"
+ NON_MODULAR: "Немодульная"
+ NON_VISIBLE: "Невидимая"
+ NON_PUBLISHED: "Неопубликованная"
+ CHARACTERS: "символов"
+ PUBLISHING: "Публикация"
+ NOTIFICATIONS: "Уведомления"
+ MEDIA_TYPES: "Типы вложений"
+ IMAGE_OPTIONS: "Параметры изображения"
+ MIME_TYPE: "Mime-тип"
+ THUMB: "Миниатюра"
+ TYPE: "Тип"
+ FILE_EXTENSION: "Расширение файла"
+ LEGEND: "Обозначения"
+ MEMCACHE_SERVER: "Сервер Memcache"
+ MEMCACHE_SERVER_HELP: "Адрес сервера Memcache"
+ MEMCACHE_PORT: "Порт Memcache"
+ MEMCACHE_PORT_HELP: "Порт сервера Memcache"
+ MEMCACHED_SERVER: "Сервер Memcached"
+ MEMCACHED_SERVER_HELP: "Адрес сервера Memcached"
+ MEMCACHED_PORT: "Порт Memcached"
+ MEMCACHED_PORT_HELP: "Порт сервера Memcached"
+ REDIS_SERVER: "Сервер Redis"
+ REDIS_SERVER_HELP: "Адрес сервера Redis"
+ REDIS_PORT: "Порт Redis"
+ REDIS_PORT_HELP: "Порт сервера Redis"
+ REDIS_PASSWORD: "Redis пароль/секрет"
+ ALL: "все"
+ FROM: "от"
+ TO: "к"
+ RELEASE_DATE: "Дата выпуска"
+ SORT_BY: "Сортировать по"
+ RESOURCE_FILTER: "Фильтр..."
+ FORCE_SSL: "Принудительный SSL"
+ FORCE_SSL_HELP: "Принудительно включить SSL по всему сайту. Если включено, при открытии сайта по HTTP Grav перенаправит на HTTPS"
+ NEWS_FEED: "Лента новостей"
+ EXTERNAL_URL: "Внешний URL"
+ SESSION_PATH: "Путь сессии"
+ SESSION_PATH_HELP: "Используйте, только если выбран пользовательский базовый URL (вы изменяли домен сайта или подпапку)"
+ CUSTOM_BASE_URL: "Пользовательский базовый URL"
+ CUSTOM_BASE_URL_HELP: "Используйте, если хотите переписать домен сайта или использовать подпапку, отличную от той, что использует Grav. Пример: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Нельзя использовать "%s" за пределами страницы.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Не удается загрузить файл %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Не удается переместить файл %s в "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Отменить загрузку'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Хотите отменить эту загрузку?'
+ DROPZONE_DEFAULT_MESSAGE: 'Перетащите файлы сюда или нажмите на эту область'
+ DROPZONE_FALLBACK_MESSAGE: 'Ваш браузер не поддерживает жест перетаскивания для загрузки файлов.'
+ DROPZONE_FALLBACK_TEXT: 'Пожалуйста, используйте резервную форму ниже, чтобы загрузить файлы как раньше.'
+ DROPZONE_FILE_TOO_BIG: 'Файл слишком велик ({{filesize}}MiB). Максимальный допустимый размер: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Вы не можете загружать файлы этого типа."
+ DROPZONE_MAX_FILES_EXCEEDED: "Вы не можете загрузить больше файлов."
+ DROPZONE_REMOVE_FILE: "Удалить файл"
+ DROPZONE_RESPONSE_ERROR: "Сервер ответил с кодом {{statusCode}}."
+ PREMIUM_PRODUCT: "Премиум"
+ ADMIN_CACHING: "Включить кэширование админки"
+ ADMIN_CACHING_HELP: "Кэшированием в админке можно управлять независимо от основного сайта"
+ DESTINATION_NOT_SPECIFIED: "Пункт назначения не указан"
+ UPLOAD_ERR_NO_TMP_DIR: "Отсутствует временная директория"
+ SESSION_SPLIT: "Раздельные сессии"
+ SESSION_SPLIT_HELP: "Отдельные сессии для сайта и других плагинов (такими как Admin)"
+ ERROR_FULL_BACKTRACE: "Полная трассировка ошибки"
+ ERROR_SIMPLE: "Простая ошибка"
+ ERROR_SYSTEM: "Системная ошибка"
+ IMAGES_AUTO_FIX_ORIENTATION: "Автоориентация изображений"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Автоматическое исправление ориентации изображений на основе данных Exif"
+ REDIS_SOCKET: "Сокет Redis"
+ REDIS_SOCKET_HELP: "Сокет Redis"
+ NOT_SET: "Не задано"
+ PERMISSIONS: "Разрешения"
+ NEVER_CACHE_TWIG: "Никогда не кэшировать Twig"
+ NEVER_CACHE_TWIG_HELP: "Кэшировать только содержание и обрабатывать Twig каждый раз при загрузке страниц. Игнорирует параметр twig_first."
+ ALLOW_WEBSERVER_GZIP: "Разрешить сжатие Gzip на сервере"
+ ALLOW_WEBSERVER_GZIP_HELP: "Выключено по умолчанию. При включении будет работать сконфигурированное на сервере сжатие Gzip/Deflate, но соединение http не будет закрываться перед событием onShutDown(), приводящим к замедлению загрузки страницы"
+ OFFLINE_WARNING: "Невозможно установить подключение к GPM"
+ CLEAR_IMAGES_BY_DEFAULT: "Очищать кэш изображений"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "По умолчанию обработанные изображения очищаются при любых чистках кэша, это можно отключить"
+ CLI_COMPATIBILITY: "Совместимость с интерфейсом командной строки (CLI)"
+ CLI_COMPATIBILITY_HELP: "Гарантирует использование долговременных драйверов кэширования (file, redis, memcache и т. д.)"
+ REINSTALL_PLUGIN: "Переустановить плагин"
+ REINSTALL_THEME: "Переустановить тему"
+ REINSTALL_THE: "Переустановить %s"
+ CONFIRM_REINSTALL: "Хотите переустановить %s?"
+ REINSTALLED_SUCCESSFULLY: "%s успешно переустановлен(а)"
+ ERROR_REINSTALLING_THE: "Ошибка переустановки %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Пакет %s успешно переустановлен"
+ REINSTALLATION_FAILED: "Переустановка не удалась"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "Установленная версия не является последней. Нажмите на кнопку «Продолжить», чтобы удалить текущую версию и установить самую свежую"
+ TOOLS: "Сервис"
+ DIRECT_INSTALL: "Прямая установка"
+ NO_PACKAGE_NAME: "Имя пакета не указано"
+ PACKAGE_EXTRACTION_FAILED: "Не удалось извлечь пакет"
+ NOT_VALID_GRAV_PACKAGE: "Недействительный пакет Grav"
+ NAME_COULD_NOT_BE_DETERMINED: "Имя не может быть определено"
+ CANNOT_OVERWRITE_SYMLINKS: "Невозможно перезаписать символические ссылки"
+ ZIP_PACKAGE_NOT_FOUND: "ZIP-пакет не найден"
+ GPM_OFFICIAL_ONLY: "Только официальный GPM"
+ GPM_OFFICIAL_ONLY_HELP: "Разрешать прямые установки только из официального хранилища GPM."
+ NO_CHILD_TYPE: "Нет дочернего типа для этого маршрута"
+ SORTABLE_PAGES: "Сортируемые страницы:"
+ UNSORTABLE_PAGES: "Несортируемые страницы"
+ ADMIN_SPECIFIC_OVERRIDES: "Специальные переопределения"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Порядок отображения дочерних страниц"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Порядок отображения дочерних элементов этой страницы в окне «Страницы» плагина Admin"
+ PWD_PLACEHOLDER: "Сложная строка длиной не менее 8 символов"
+ PWD_REGEX: "Пароль, регулярка"
+ PWD_REGEX_HELP: "По умолчанию: Пароль должен содержать как минимум одно число, одну прописную и строчную буквы, и как минимум 8 символов."
+ USERNAME_PLACEHOLDER: "только строчные символы, н. п. 'admin'"
+ USERNAME_REGEX: "Имя пользователя, регулярка"
+ USERNAME_REGEX_HELP: "По умолчанию: Только строчные символы, цифры, дефисы и подчеркивания. 3-16 символов."
+ CONTENT_PADDING: "Отступы для содержимого"
+ CONTENT_PADDING_HELP: "Включить/отключить добавление контента вокруг области содержимого, чтобы обеспечить больше места."
+ ENABLE_AUTO_METADATA: "Авто метаданные из Exif"
+ ENABLE_AUTO_METADATA_HELP: "Автоматическое создание файлов метаданных для изображений с помощью информации из Exif."
+ 2FA_TITLE: "Двухфакторная аутентификация"
+ 2FA_INSTRUCTIONS: "##### 2-факторная аутентификация\nУ вас включена **2FA**. Пожалуйста, используйте ваше приложение **2FA**, чтобы ввести текущий **6-значный код**, для завершения процесса входа в систему."
+ 2FA_REGEN_HINT: "Чтобы восстановить секрет, вам потребуется обновить приложение для аутентификации"
+ 2FA_LABEL: "Доступ администратора"
+ 2FA_FAILED: "Недействительный код 2FA, пожалуйста попробуйте еще раз..."
+ 2FA_ENABLED: "2FA включен"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "Секрет Api"
+ 2FA_SECRET_HELP: "Сканируйте этот QR-код в свое [приложение аутентификации] (https://learn.getgrav.org/admin-panel/2fa#apps). Также рекомендуется резервировать секрет в безопасном месте, если вам нужно переустановить приложение. Для получения дополнительной информации просмотрите документы [Grav docs] (https://learn.getgrav.org/admin-panel/2fa) "
+ 2FA_REGENERATE: "Сгенерировать новый"
+ FORCE_LOWERCASE_URLS: "Принудительное приведение URLs к строчному виду"
+ FORCE_LOWERCASE_URLS_HELP: "По умолчанию Grav будет устанавливать все заглушки и маршруты в нижний регистр. Если этот параметр установлен в false, можно использовать заглушки и маршруты в верхнем регистре"
+ INTL_ENABLED: "Интеграция модуля Intl"
+ INTL_ENABLED_HELP: "Использовать PHP модуль Intl и collate для сортировки коллекций, хранящихся в UTF-8"
+ VIEW_SITE_TIP: "Открыть сайт"
+ TOOLS_DIRECT_INSTALL_TITLE: "Прямая установка Grav пакетов"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Установка пакета через прямую загрузку ZIP-файла"
+ TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Вы с легкостью можете обновить Grav или установить подходящую тему, плагин для него. Этот пакет не нужно регистрировать с помощью GPM и он позволяет легко откатиться к предыдущей версии или установить тестовую."
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Установить пакет через удаленный URL-адрес"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Кроме того, вы также можете указать полный URL-адрес к ZIP-файлу пакета и установить его через этот удаленный URL-адрес."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Загрузить и установить"
+ ROUTE_OVERRIDES: "Переадресация маршрута"
+ ROUTE_DEFAULT: "Маршрут по умолчанию"
+ ROUTE_CANONICAL: "Канонический маршрут"
+ ROUTE_ALIASES: "Псевдонимы маршрута"
+ OPEN_NEW_TAB: "Открыть в новой вкладке"
+ PAGEMEDIA_RESIZER: "> Следующие настройки применяются к изображениям, загруженным через страницу мультимедиа. Изменение размера по ширине / высоте автоматически изменит размеры и пропорционально уменьшит изображение, если оно превысит установленные пределы. Минимальное и максимальное значения разрешения определяют диапазоны размеров для загружаемых изображений. Установите поля в 0, чтобы предотвратить любые манипуляции."
+ SESSION_INITIALIZE: "Инициализировать сессию"
+ SESSION_INITIALIZE_HELP: "Просит Grav начать сеанс. Эта функция необходима для работы любых взаимодействий с пользователем, таких как вход в систему, формы и т. д. На плагин администратора этот параметр не влияет."
+ STRICT_YAML_COMPAT: "YAML совместимость"
+ STRICT_YAML_COMPAT_HELP: "Откат к YAML парсеру Symfony 2.4, если нативный парсер 3.4 не работает"
+ STRICT_TWIG_COMPAT: "Twig совместимость"
+ STRICT_TWIG_COMPAT_HELP: "Включает устаревшую настройку экранирования Twig. Когда этот параметр отключен, для вывода HTML требуется фильтр |raw, поскольку Twig будет автоматически экранировать вывод"
+ SCHEDULER: "Планировщик"
+ SCHEDULER_INSTALL_INSTRUCTIONS: "Инструкции по установке"
+ SCHEDULER_INSTALLED_READY: "Установлено и готово"
+ SCHEDULER_CRON_NA: "Cron не доступен"
+ SCHEDULER_NOT_ENABLED: "Не включен"
+ SCHEDULER_SETUP: "Настройка планировщика"
+ SCHEDULER_INSTRUCTIONS: "Планировщик Grav позволяет создавать и планировать пользовательские задания. Он также предоставляет Grav плагинам возможность интегрировать программно и динамически добавлять задания для периодического запуска."
+ SCHEDULER_POST_INSTRUCTIONS: "Чтобы включить функции планировщика, вы должны добавить планировщик Grav в файл crontab вашей системы. Запустите указанную выше команду из терминала, чтобы добавить ее автоматически. После сохранения обновите эту страницу, чтобы увидеть статус 'Готов'."
+ SCHEDULER_JOBS: "Пользовательские задания планировщика"
+ SCHEDULER_STATUS: "Статус планировщика"
+ SCHEDULER_RUNAT: "Запустить в"
+ SCHEDULER_OUTPUT: "Выходной файл"
+ SCHEDULER_OUTPUT_HELP: "Путь/имя файла вывода (из корня установки Grav)"
+ SCHEDULER_OUTPUT_TYPE: "Тип вывода"
+ SCHEDULER_EMAIL: "Email"
+ SCHEDULER_EMAIL_HELP: "E-mail для отправки вывода. ПРИМЕЧАНИЕ: требуется указать выходной файл"
+ SECURITY: "Безопасность"
+ XSS_SECURITY: "XSS безопасность контента"
+ XSS_WHITELIST_PERMISSIONS: "Белый список разрешений"
+ XSS_WHITELIST_PERMISSIONS_HELP: "Пользователи с этими разрешениями пропустят правила XSS при сохранении контента"
+ XSS_ON_EVENTS: "Фильтр событий"
+ XSS_INVALID_PROTOCOLS: "Фильтр неверных протоколов"
+ XSS_INVALID_PROTOCOLS_LIST: "Список неверных протоколов"
+ XSS_MOZ_BINDINGS: "Фильтр Moz привязок"
+ XSS_HTML_INLINE_STYLES: "Фильтровать встроенные стили HTML"
+ XSS_DANGEROUS_TAGS: "Фильтровать опасные HTML-теги"
+ XSS_DANGEROUS_TAGS_LIST: "Список опасных HTML-тегов"
+ XSS_ONSAVE_ISSUE: "Не удалось сохранить: обнаружена проблема с XSS..."
+ XSS_ISSUE: "ВНИМАНИЕ: Grav обнаружил возможные проблемы с XSS в %s"
+ UPLOADS_SECURITY: "Безопасность загрузок"
+ UPLOADS_DANGEROUS_EXTENSIONS: "Опасные Расширения"
+ UPLOADS_DANGEROUS_EXTENSIONS_HELP: "Не разрешать загрузку этих расширений в независимости от разрешённых MIME-типов"
+ REPORTS: "Отчёты"
+ LOGS: "Логи"
+ LOG_VIEWER_FILES: "Файлы логов"
+ LOG_VIEWER_FILES_HELP: "Файлы в /logs/ будут доступны для просмотра в Инструменты - Логи. Например, grav' = /logs/grav.log"
+ BACKUPS_MAX_COUNT: "Максимальное количество резервных копий"
+ BACKUPS_MAX_COUNT_HELP: "0 — без ограничений"
+ BACKUPS_MAX_RETENTION_TIME_APPEND: "в днях"
+ BACKUPS_PROFILE_NAME: "Имя резервной копии"
+ BACKUPS_PROFILE_ROOT_FOLDER: "Корневой каталог"
+ BACKUPS_PROFILE_EXCLUDE_PATHS: "Исключенные пути"
+ BACKUPS_PROFILE_EXCLUDE_PATHS_HELP: "Абсолютные пути для исключения, по одному в строке"
+ BACKUPS_PROFILE_EXCLUDE_FILES: "Исключенные файлы"
+ BACKUPS_PROFILE_EXCLUDE_FILES_HELP: "Конкретные файлы или папки для исключения, по одному в строке"
+ BACKUPS_PROFILE_SCHEDULE: "Включить планировщик"
+ COMMAND: "Команда"
+ EXTRA_ARGUMENTS: "Дополнительные аргументы"
diff --git a/user/plugins/admin/languages/sk.yaml b/user/plugins/admin/languages/sk.yaml
new file mode 100644
index 0000000..3f4ad93
--- /dev/null
+++ b/user/plugins/admin/languages/sk.yaml
@@ -0,0 +1,555 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Toto je Beta verzia! Používajte v ostrej prevádzke na vlastné riziko..."
+ ADMIN_REPORT_ISSUE: "Vyskytla sa chyba? Prosím, nahláste to na GitHub."
+ EMAIL_FOOTER: "Poháňaný Grav-om - moderný flat-file redakčný systém"
+ LOGIN_BTN: "Prihlásiť sa"
+ LOGIN_BTN_FORGOT: "Zabudli ste meno/heslo"
+ LOGIN_BTN_RESET: "Obnoviť heslo"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Poslať pokyny na obnovenie"
+ LOGIN_BTN_CLEAR: "Vyčistiť formulár"
+ LOGIN_BTN_CREATE_USER: "Vytvoriť používateľa"
+ LOGIN_LOGGED_IN: "Boli ste úspešne prihlásený"
+ LOGIN_FAILED: "Prihásenie neúspešné"
+ LOGGED_OUT: "Boli ste odhlásení"
+ RESET_NEW_PASSWORD: "Zadajte nové heslo …"
+ RESET_LINK_EXPIRED: "Platnosť odkazu pre obnovenie hesla vypršala, prosím skúste to znovu"
+ RESET_PASSWORD_RESET: "Heslo bolo obnovené"
+ RESET_INVALID_LINK: "Neplatný odkaz pre obnovenie hesla. Prosím, skúste to znovu"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Pokyny na obnovenie hesla boli odoslané prostredníctvom e-mailu pre %s"
+ FORGOT_FAILED_TO_EMAIL: "Nepodarilo sa odoslanie emailu s pokynmi, skúste to prosím neskôr"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Nemožno obnoviť heslo pre %s, nie je nastavená žiadna e-mailová adresa"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Používateľ s prihlasovacím menom %s neexistuje"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Nemožno vytvoriť nové heslo. Táto stránka nie je nakonfigurovaná na odosielanie e-mailov"
+ FORGOT_EMAIL_SUBJECT: "%s žiadosť obnoviť heslo"
+ FORGOT_EMAIL_BODY: "
Алтернативно, копирајте следећи URL у свој веб претраживач:
%2$s
Срдачан поздрав,
%3$s
"
+ MANAGE_PAGES: "Управљање Страницама"
+ CONFIGURATION: "Подешавање"
+ PAGES: "Странице"
+ PLUGINS: "Додаци"
+ PLUGIN: "Додатак"
+ THEMES: "Теме"
+ LOGOUT: "Одјава"
+ BACK: "Назад"
+ NEXT: "Следећа"
+ PREVIOUS: "Предходно"
+ ADD_PAGE: "Додај страницу"
+ ADD_MODULAR: "Додај Модуларну"
+ MOVE: "Помери"
+ DELETE: "Обриши"
+ UNSET: "Поништи подешавање"
+ VIEW: "Преглед"
+ SAVE: "Сачувај"
+ NORMAL: "Нормалан"
+ EXPERT: "Напредни"
+ EXPAND_ALL: "Прошири све"
+ COLLAPSE_ALL: "Скупи све"
+ ERROR: "Грешка"
+ CLOSE: "Затвори"
+ CANCEL: "Откажи"
+ CONTINUE: "Настави"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Потврда је обавезна"
+ MODAL_CHANGED_DETECTED_TITLE: "Откривене су измене"
+ MODAL_CHANGED_DETECTED_DESC: "Имате неснимљене измене. Да ли сте сигурни да желите да изађете без снимања измена?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Потврда је обавезна"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Да ли сте сигурни да желите да обришете овај фајл? Ову радњу није могуће опозвати."
+ ADD_FILTERS: "Додај филтере"
+ SEARCH_PAGES: "Претражи странице"
+ VERSION: "Верзија"
+ WAS_MADE_WITH: "Креирано помоћу"
+ BY: "Од стране"
+ UPDATE_THEME: "Ажурирај тему"
+ UPDATE_PLUGIN: "Ажурирај Додатак"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "ове теме је сада доступан"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "овог додатка је сада доступан"
+ AUTHOR: "Аутор"
+ HOMEPAGE: "Почетна страница"
+ DEMO: "Демо"
+ BUG_TRACKER: "Трагач за грешкама"
+ KEYWORDS: "Кључне речи"
+ LICENSE: "Лиценца"
+ DESCRIPTION: "Опис"
+ README: "Прочитај ме"
+ REMOVE_THEME: "Избриши тему"
+ INSTALL_THEME: "Инсталирај тему"
+ THEME: "Тема"
+ BACK_TO_THEMES: "Назад на Теме"
+ BACK_TO_PLUGINS: "Назад на Додатке"
+ CHECK_FOR_UPDATES: "Провери да ли има нових верзија"
+ ADD: "Додај"
+ CLEAR_CACHE: "Очисти кеш"
+ CLEAR_CACHE_ALL_CACHE: "Сав кеш"
+ CLEAR_CACHE_ASSETS_ONLY: "Само Додаци"
+ CLEAR_CACHE_IMAGES_ONLY: "Само Слике"
+ CLEAR_CACHE_CACHE_ONLY: "Само Кеш"
+ CLEAR_CACHE_TMP_ONLY: "Само Tmp"
+ DASHBOARD: "Командна табла"
+ UPDATES_AVAILABLE: "Доступно ажурирање"
+ DAYS: "Дани"
+ UPDATE: "Ажурирање"
+ BACKUP: "Резервна копија"
+ BACKUPS: "Резервне копије"
+ BACKUP_NOW: "Направи резервну копију одмах"
+ BACKUPS_STATS: "Статистика резервне копије"
+ BACKUPS_HISTORY: "Историја резервне копије"
+ BACKUPS_PURGE_CONFIG: "Подешавање чишћења резервне копије"
+ BACKUPS_PROFILES: "Профили резервне копије"
+ BACKUPS_COUNT: "Број резервних копија"
+ BACKUPS_PROFILES_COUNT: "Број профила"
+ BACKUPS_TOTAL_SIZE: "Заузеће простора"
+ BACKUPS_NEWEST: "Најновија резервна копија"
+ BACKUPS_OLDEST: "Најстарија резервна копија"
+ BACKUPS_PURGE: "Уклонити"
+ BACKUPS_NOT_GENERATED: "Још увел нема креираних резервних копија..."
+ BACKUPS_PURGE_NUMBER: "Корисити %s од %s слотова за резервне копије"
+ BACKUPS_PURGE_TIME: "остало је %s дана за резевне копије"
+ BACKUPS_PURGE_SPACE: "Корисити %s од %s"
+ BACKUP_DELETED: "Резервна копија је успешно обрисана"
+ BACKUP_NOT_FOUND: "Резервна копија није пронађена"
+ BACKUP_DATE: "Датум резервне копије"
+ STATISTICS: "Статистика"
+ TODAY: "Данас"
+ WEEK: "Седмица"
+ MONTH: "Месец"
+ LATEST_PAGE_UPDATES: "Најновије ажуриране странице"
+ MAINTENANCE: "Одржавање"
+ UPDATED: "Ажрурирано"
+ MON: "Пон"
+ TUE: "Уто"
+ WED: "Сре"
+ THU: "Чет"
+ FRI: "Пет"
+ SAT: "Суб"
+ SUN: "Нед"
+ COPY: "Копирај"
+ EDIT: "Измени"
+ CREATE: "Креирај"
+ GRAV_ADMIN: "Грав Админ"
+ GRAV_OFFICIAL_PLUGIN: "Грав Званични додатак"
+ GRAV_OFFICIAL_THEME: "Грав Званична тема"
+ PLUGIN_SYMBOLICALLY_LINKED: "Овај додатак је симболично линкован. Ажурирања неће бити откривена."
+ THEME_SYMBOLICALLY_LINKED: "Ова тема је симболично линкована. Ажурирања неће бити откривена"
+ REMOVE_PLUGIN: "Уклони Додатак"
+ INSTALL_PLUGIN: "Инсталирај Додатак"
+ AVAILABLE: "Доступно"
+ INSTALLED: "Инсталирано"
+ INSTALL: "Инсталирај"
+ ACTIVE_THEME: "Активна тема"
+ SWITCHING_TO: "Прелазим на"
+ SWITCHING_TO_DESCRIPTION: "Преласком на другу тему, нема гаранције да су сви распореди страница подржани, и постоји могућа појаве грешака приликом покушаја учитавања поменутих страница."
+ SWITCHING_TO_CONFIRMATION: "Да ли желите да наставите и пређете на тему"
+ CREATE_NEW_USER: "Креирај новог Корисника"
+ REMOVE_USER: "Уклони Корисника"
+ ACCESS_DENIED: "Приступ је забрањен"
+ ACCOUNT_NOT_ADMIN: "ваш налог нема администраторска овлашћења"
+ PHP_INFO: "PHP инфо"
+ INSTALLER: "Инсталатер"
+ AVAILABLE_THEMES: "Доступне теме"
+ AVAILABLE_PLUGINS: "Доступни Додаци"
+ INSTALLED_THEMES: "Инсталиране теме"
+ INSTALLED_PLUGINS: "Инсталирани Додаци"
+ BROWSE_ERROR_LOGS: "Претраживање Евиденције о грешкама"
+ SITE: "Сајт"
+ INFO: "Инфо"
+ SYSTEM: "Систем"
+ USER: "Корисник"
+ ADD_ACCOUNT: "Додај Налог"
+ SWITCH_LANGUAGE: "Промени језик"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Успешно активиран додатак"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Успешно деактивиран додатак"
+ SUCCESSFULLY_CHANGED_THEME: "Успешно промењена подразумевана тема"
+ INSTALLATION_FAILED: "Инсталација није успела"
+ INSTALLATION_SUCCESSFUL: "Инстлација је успела"
+ UNINSTALL_FAILED: "Деинсталација није успела"
+ UNINSTALL_SUCCESSFUL: "Деинсталација је успела"
+ SUCCESSFULLY_SAVED: "Успешно сачувано"
+ SUCCESSFULLY_COPIED: "Успешно копирано"
+ REORDERING_WAS_SUCCESSFUL: "Преуређивање је успело"
+ SUCCESSFULLY_DELETED: "Брисање је успело"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Промена језика је успела"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Немате довољно овлашћења за извршење задатка"
+ CACHE_CLEARED: "Кеш очишћен"
+ METHOD: "Метод"
+ ERROR_CLEARING_CACHE: "Грешка при брисању кеша"
+ AN_ERROR_OCCURRED: "Појавила се грешка"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Ваша резервна копија је спремна за преузимање"
+ DOWNLOAD_BACKUP: "Преузми резервну копију"
+ PAGES_FILTERED: "Странице су филтриране"
+ NO_PAGE_FOUND: "Страница није пронађена"
+ INVALID_PARAMETERS: "Неодоговарајући параметри"
+ NO_FILES_SENT: "Фајлови нису послани"
+ EXCEEDED_FILESIZE_LIMIT: "Премашен је лимит за величину фајла у PHP конфигурацији"
+ EXCEEDED_POSTMAX_LIMIT: "Прекорачена вредност PHP конфигурисаног post_max_size"
+ UNKNOWN_ERRORS: "Непознате грешке"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Премашен је лимит за величину фајла у Грав конфигурацији"
+ UNSUPPORTED_FILE_TYPE: "Неподржани тип фајла"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Неуспело премештање учитаног фајла"
+ FILE_UPLOADED_SUCCESSFULLY: "Фајл је успешно учитан"
+ FILE_DELETED: "Фајл је обрисан"
+ FILE_COULD_NOT_BE_DELETED: "Фајл није могао бити обрисан"
+ FILE_NOT_FOUND: "Фајл није пронађен"
+ NO_FILE_FOUND: "Нема пронађеног фајла"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Грав је успешно ажуриран на"
+ GRAV_UPDATE_FAILED: "Ажурирање Грава није успело"
+ EVERYTHING_UPDATED: "Све је ажурирано"
+ UPDATES_FAILED: "Ажурирања неуспела"
+ AVATAR_BY: "Аватар поставио"
+ AVATAR_UPLOAD_OWN: "Или учитајте лично ваш..."
+ LAST_BACKUP: "Последња резервна копија"
+ FULL_NAME: "Пуно име"
+ USERNAME: "Корисничко име"
+ EMAIL: "Адреса Е-поште"
+ USERNAME_EMAIL: "Корисничко име или адреса Е-поште"
+ PASSWORD: "Лозинка"
+ PASSWORD_CONFIRM: "Потврди лозинку"
+ TITLE: "Наслов"
+ LANGUAGE: "Језик"
+ ACCOUNT: "Налог"
+ EMAIL_VALIDATION_MESSAGE: "Мора бити исправна адреса е-поште"
+ PASSWORD_VALIDATION_MESSAGE: "Лозинка мора садржати бар један број и по једно мало и велико слово, а заједно најмање 8 или више карактера"
+ LANGUAGE_HELP: "Подесите омиљени језик"
+ MEDIA: "Медији"
+ DEFAULTS: "Подразумевано"
+ SITE_TITLE: "Наслов сајта"
+ SITE_TITLE_PLACEHOLDER: "Наслов целог сајта"
+ SITE_TITLE_HELP: "Подразумевани наслов на вашем сајту, често коришћен у темама"
+ SITE_DEFAULT_LANG: "Подразумевани језик"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Подразумевани језик који ће бити коришћен у тагу теме"
+ SITE_DEFAULT_LANG_HELP: "Подразумевани језик који ће се користити у таговима теме"
+ DEFAULT_AUTHOR: "Подразумевани Аутор"
+ DEFAULT_AUTHOR_HELP: "Подразумевано име аутора, често коришћено у темама или садржају страница"
+ DEFAULT_EMAIL: "Подразумевана адреса е-поште"
+ DEFAULT_EMAIL_HELP: "Подразумевана адреса е-поште за повезивање у темама или страницама"
+ TAXONOMY_TYPES: "Типови Таксономије"
+ TAXONOMY_TYPES_HELP: "Типови Таксономије морају бити дефинисани овде уколико желите да их користите на страницама"
+ PAGE_SUMMARY: "Сажетак Странице"
+ ENABLED: "Омогућено"
+ ENABLED_HELP: "Омогући сажетак странице (сажетак одражава исти садржај као и страница)"
+ 'YES': "Да"
+ 'NO': "Не"
+ SUMMARY_SIZE: "Величина сажетка"
+ SUMMARY_SIZE_HELP: "Број карактера на страници који ће се користити као сажетак садржаја"
+ FORMAT: "Формат"
+ FORMAT_HELP: "кратко = користи прву појаву граничника или величину; дугачко = граничник сажетка ће бити игнорисан"
+ SHORT: "Кратко"
+ LONG: "Дугачко"
+ DELIMITER: "Граничник"
+ DELIMITER_HELP: "Граничник Сажетка (подразумевано '===')"
+ METADATA: "Мета подаци"
+ METADATA_HELP: "Подразумеване вредности мета података ће бити приказане на свакој страници осим уколико су заобиђене од странице"
+ NAME: "Име"
+ CONTENT: "Садржај"
+ SIZE: "Величина"
+ ACTION: "Акција"
+ REDIRECTS_AND_ROUTES: "Преусмеравања и Путање"
+ CUSTOM_REDIRECTS: "Прилагођена преусмеравања"
+ CUSTOM_REDIRECTS_HELP: "путање за преусмеравање на друге странице. Стандардна Regex замена је исправна"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/ваш/надимак"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/ваше/преусмеравање"
+ CUSTOM_ROUTES: "Прилагођене путање"
+ CUSTOM_ROUTES_HELP: "путање за преусмеравање на друге странице. Стандардна Regex замена је исправна"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/ваш/надимак"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/ваша/путања"
+ FILE_STREAMS: "Токови фајлова"
+ DEFAULT: "Подразумевано"
+ PAGE_MEDIA: "Медији странице"
+ OPTIONS: "Опције"
+ PUBLISHED: "Објављено"
+ PUBLISHED_HELP: "Подразумевано, страница је објављена осим уколико експлицитно означите published: false или преко publish_date одредите време у будућности, односно са unpublish_date у прошлости"
+ DATE: "Датум"
+ DATE_HELP: "Променљива датум вам омогућава да одредите датум везан за ову страницу."
+ PUBLISHED_DATE: "Датум објављивања"
+ PUBLISHED_DATE_HELP: "Омогућава датум за аутоматско објављивање."
+ UNPUBLISHED_DATE: "Датум за поништење објављивања"
+ UNPUBLISHED_DATE_HELP: "Омогућава датум за аутоматско поништење објављивања."
+ ROBOTS: "Роботи"
+ TAXONOMIES: "Таксономије"
+ TAXONOMY: "Таксономија"
+ ADVANCED: "Напредно"
+ SETTINGS: "Подешавања"
+ FOLDER_NUMERIC_PREFIX: "Нумерички префикс фолдера"
+ FOLDER_NUMERIC_PREFIX_HELP: "Нумерички префикс који омогућава ручно сортирање и утицај на видљивост"
+ FOLDER_NAME: "Име фолдера"
+ FOLDER_NAME_HELP: "Име фолдера које ће бити сачувано у фајл систему за ову страницу"
+ PARENT: "Матична"
+ DEFAULT_OPTION_ROOT: "- Корен -"
+ DEFAULT_OPTION_SELECT: "- Избор -"
+ DISPLAY_TEMPLATE: "Приказ шаблона"
+ DISPLAY_TEMPLATE_HELP: "Тип странице који дефинише који Твиг шаблог креира страницу"
+ BODY_CLASSES: "Body класе"
+ ORDERING: "Редослед"
+ PAGE_ORDER: "Редослед странице"
+ OVERRIDES: "Заобилажења"
+ MENU: "Изборник-мени"
+ MENU_HELP: "Стринг који ће се користити у менију. Уколико није подешен, Наслов ће бити коришћен."
+ SLUG: "Алиас"
+ SLUG_HELP: "Променљива Алиас омогућава да посебно дефинише део URLa који одговара страници"
+ SLUG_VALIDATE_MESSAGE: "Алиас мора да садржи само мале алфанумеричке карактере и цртице"
+ PROCESS: "Процес"
+ PROCESS_HELP: "Контролише како се процесира страница. Може се подесити по страници уместо глобално"
+ DEFAULT_CHILD_TYPE: "Подразумевани тип подстранице"
+ USE_GLOBAL: "Користи глобално"
+ ROUTABLE: "Могућност усмеравања"
+ ROUTABLE_HELP: "Уколико је ова страница доступна преко URL-a"
+ CACHING: "Кеширање"
+ VISIBLE: "Видљиво"
+ VISIBLE_HELP: "Одређује да ли је страница видљива у Изборнику-менију."
+ DISABLED: "Искључено"
+ ITEMS: "Ставке"
+ ORDER_BY: "Сортирано по"
+ ORDER: "Сортирање"
+ FOLDER: "Фолдер"
+ ASCENDING: "Растући"
+ DESCENDING: "Опадајући"
+ ADD_MODULAR_CONTENT: "Додај Модуларни садржај"
+ PAGE_TITLE: "Наслов странице"
+ PAGE_TITLE_HELP: "Наслов странице"
+ PAGE: "Страница"
+ MODULAR_TEMPLATE: "Модуларни Шаблон"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Име фајла"
+ PARENT_PAGE: "Матична страница"
+ HOME_PAGE: "Основна страница"
+ HOME_PAGE_HELP: "Страница коју Грав користи као подразумевану почетну страницу"
+ DEFAULT_THEME: "Подразумевана тема"
+ DEFAULT_THEME_HELP: "Поставља подразумевану тему коју Грав користи (подразумевана је Antimatter)"
+ TIMEZONE: "Временска зона"
+ TIMEZONE_HELP: "Заобилази подразумевану временску зону на серверу"
+ SHORT_DATE_FORMAT: "Скраћени формат приказа датума"
+ SHORT_DATE_FORMAT_HELP: "Поставља скраћени формат датума који користи тема"
+ LONG_DATE_FORMAT: "Приказ дугачког формата датума"
+ LONG_DATE_FORMAT_HELP: "Подешава дугачки формат датума који могу користити теме"
+ DEFAULT_ORDERING: "Подразумевано сортирање"
+ DEFAULT_ORDERING_HELP: "Странице на листи ће бити приказане корићењем овог сортирања осим уколико се не заобиђе"
+ DEFAULT_ORDERING_DEFAULT: "Подразумевано - засновано на имену фолдера"
+ DEFAULT_ORDERING_FOLDER: "Фолдер - заснован на имену фолдера без префикса"
+ DEFAULT_ORDERING_TITLE: "Наслов - заснован на пољу наслова у заглављу"
+ DEFAULT_ORDERING_DATE: "Датум - заснован на пољу датума у заглављу"
+ DEFAULT_ORDER_DIRECTION: "Подразумевани правац редоследа"
+ DEFAULT_ORDER_DIRECTION_HELP: "Редослед страница на листи"
+ DEFAULT_PAGE_COUNT: "Подразумевани број страница"
+ DEFAULT_PAGE_COUNT_HELP: "Подразумевани максимални број страница на листи"
+ DATE_BASED_PUBLISHING: "Објављивање базирано на датуму"
+ DATE_BASED_PUBLISHING_HELP: "Аутоматско (не)објављивање постова базирано на њиховом датуму"
+ EVENTS: "Догађаји"
+ EVENTS_HELP: "Омогући или онемогући одређене догађаје. Онемогућавањем можете покварити додатке"
+ REDIRECT_DEFAULT_ROUTE: "Преусмеравање подразумеване путање"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Аутоматско преусмеравање подразумеване путање странице"
+ LANGUAGES: "Језици"
+ SUPPORTED: "Подржани"
+ SUPPORTED_HELP: "Зарезом раздвојена листа двословних ознака језика (на пример 'en,fr,de')"
+ TRANSLATIONS_ENABLED: "Преводи су омогућени"
+ TRANSLATIONS_ENABLED_HELP: "Подржава преводе у Граву, додацима и проширењима"
+ TRANSLATIONS_FALLBACK: "Резервна варијанта превода"
+ TRANSLATIONS_FALLBACK_HELP: "Прелазак на резервну варијјанту превода уколико активни језик не постоји"
+ ACTIVE_LANGUAGE_IN_SESSION: "Активни језик у сесији"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Сачувај активни језик у сесији"
+ HTTP_HEADERS: "HTTP заглавља"
+ EXPIRES: "Истичу"
+ EXPIRES_HELP: "Подешава истицање заглавља. Вредност је у секундама."
+ CACHE_CONTROL: "HTTP контрола кеша"
+ CACHE_CONTROL_HELP: "Подешено на исправну вредност контроле кеширања као што су `no-cache, no-store, must-revalidate`"
+ LAST_MODIFIED: "Последња измена"
+ LAST_MODIFIED_HELP: "Подешава последње измењено заглавље које може помоћи оптимизацију проксија и кеширање веб претраживача"
+ ETAG: "ETag"
+ ETAG_HELP: "Подешава etag заглавље што помаже идентификацији измене странице"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Подешава `Vary: Accept Encoding` заглавље да би помогло са проксијем и CDN кеширањем"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Додатни mаrkdown"
+ MARKDOWN_EXTRA_HELP: "Омогућава подразумевану подршку за додатни Markdown - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Искључује HTML елементe у додатним markdown оградама"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Искључује HTML елементe у додатним markdown оградама"
+ AUTO_LINE_BREAKS: "Аутоматски прелом редова"
+ AUTO_LINE_BREAKS_HELP: "Омогућава подршку за аутоматско преламање редова у markdown-у"
+ AUTO_URL_LINKS: "Аутоматски URL линкови"
+ AUTO_URL_LINKS_HELP: "Омогућава аутоматско претварање URL-ова у HTML хипер линкове"
+ ESCAPE_MARKUP: "Искључује markup"
+ ESCAPE_MARKUP_HELP: "Избегавај markup тагове у HTML објектима"
+ CACHING_HELP: "Глобални ON/OFF прекидач за активирање/деактивирање кеширање Грава"
+ CACHE_CHECK_METHOD: "Метода за проверу кеша"
+ CACHE_CHECK_METHOD_HELP: "Изаберите методу коју користи Грав за проверу да ли су фајлови са страницама промењени."
+ CACHE_DRIVER: "Драјвер за кеш"
+ CACHE_DRIVER_HELP: "Изаберите који кеш драјвер Грав треа да користи. 'Ауто детекција' покушава да пронађе најбољи за вас"
+ CACHE_PREFIX: "Префикс кеша"
+ CACHE_PREFIX_HELP: "Идентификатор за део Грав кључа. Не мењајте уколико не знате шта радите."
+ CACHE_PREFIX_PLACEHOLDER: "Изведено из основног URLa (заобилази се уношењем насумичног стринга)"
+ CACHE_PURGE_JOB: "Покрени заказани Програм за уклањање"
+ CACHE_PURGE_JOB_HELP: "За Распоредом можете периодично чистити старе Doctrine фајл кеш фолдере са овим програмом"
+ CACHE_CLEAR_JOB: "Покрени заказани Програм за чишћење"
+ CACHE_CLEAR_JOB_HELP: "Са Распоредом можете повремено да чистите Grav-ов кеш"
+ CACHE_JOB_TYPE: "Врста посла кеш"
+ CACHE_JOB_TYPE_HELP: "Избришите кеш фолдера користећи 'стандардно' брисање, или користећи 'све' фолдере"
+ CACHE_PURGE: "Уклони стари кеш"
+ LIFETIME: "Време трајања"
+ LIFETIME_HELP: "Поставља време трајања кеша у секундама. 0 = бесконачно"
+ GZIP_COMPRESSION: "Gzip компресија"
+ GZIP_COMPRESSION_HELP: "Омогућава GZip компресију Грав страница за побољшање перформанси."
+ TWIG_TEMPLATING: "Твиг шаблони"
+ TWIG_CACHING: "Твиг кеширање"
+ TWIG_CACHING_HELP: "Контролише Твигов механизам за кеширање. Оставите аквитирано ради бољих перформанси."
+ TWIG_DEBUG: "Твиг дебаговање"
+ TWIG_DEBUG_HELP: "Омогућава да се не учитава Твигова екстезија за дебаговање"
+ DETECT_CHANGES: "Откриј измене"
+ DETECT_CHANGES_HELP: "Твиг ће аутоматски рекомпајлирати Твиг кеш уколико открије промене у Твиг шаблонима"
+ AUTOESCAPE_VARIABLES: "Аутоматско избегавање променљивих"
+ AUTOESCAPE_VARIABLES_HELP: "Аутоматско заобилажење свих променљивих. Ово ће вероватно покварити ваш сајт"
+ ASSETS: "Средства"
+ CSS_PIPELINE: "CSS цевовод"
+ CSS_PIPELINE_HELP: "CSS цевовод је сједињавање вишеструких CSS извора у један фајл"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Прикључи спољне изворе у CSS цевовод"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "Спољни линкови понекада имају релативне везе ка фајловима и не би требали да се сједињују"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "Прво се рендерује CSS цевовод"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Рендеровање CSS цевовода пре било ког другог CSS извора који није укључен"
+ CSS_MINIFY: "CSS сажимање"
+ CSS_MINIFY_HELP: "Сажимање CSSa током сједињавања у цевовод"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "CSS сажимање Windows Заобилажење"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Заобилажење сажимања за Windows платофме. False је подразумевано услед ThreadStackSize"
+ CSS_REWRITE: "CSS преписивање"
+ CSS_REWRITE_HELP: "Преписује било који релативни CSS URL током сједињавања у цевовод"
+ JAVASCRIPT_PIPELINE: "JavaScript цевовод"
+ JAVASCRIPT_PIPELINE_HELP: "JS цевовод је сједињавање вишеструких JS извора у један фајл"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Укључује спољне изворе у JS цевовод"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "Спољни линкови понекада имају релативне везе ка фајловима и не би требали да буди сједињени у цевовод"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Прво рендеровање JS цевовода"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Рендеровање JS цевовода пре било ког другог JS извора који није укључен"
+ JAVASCRIPT_MINIFY: "JavaSript сажимање"
+ JAVASCRIPT_MINIFY_HELP: "Сажимање JS током сједињавања у цевовод"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Омогућава временске оснаке на средствима"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Омогући временске ознаке на средствима"
+ COLLECTIONS: "Колекције"
+ ERROR_HANDLER: "Управљач грешака"
+ DISPLAY_ERRORS: "Приказ грешака"
+ DISPLAY_ERRORS_HELP: "Прикажи комплетну страницу о грешци"
+ LOG_ERRORS: "Дневник о грешкама"
+ LOG_ERRORS_HELP: "Региструје грешке у /logs фолдер"
+ LOG_HANDLER: "Управљач дневицима"
+ LOG_HANDLER_HELP: "Где послати дневнике"
+ SYSLOG_FACILITY: "Опције за Syslog"
+ SYSLOG_FACILITY_HELP: "Опције за излаз Syslog-а"
+ DEBUGGER: "Debugger"
+ DEBUGGER_HELP: "Активира Грав debugger и следећа подешавања"
+ DEBUG_TWIG: "Debug Twig"
+ DEBUG_TWIG_HELP: "Активира откривање грешака у Twig шаблонима"
+ SHUTDOWN_CLOSE_CONNECTION: "Искључи отворене везе"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "Затвара везу пре позивања onShutdown(). false за debugging"
+ DEFAULT_IMAGE_QUALITY: "Подразумевани квалитет слика"
+ DEFAULT_IMAGE_QUALITY_HELP: "Подразумевани квалитет слика који ће бити коришћен током кеширања или промене величине (85%)"
+ CACHE_ALL: "Кеширај све слике"
+ CACHE_ALL_HELP: "Провуци све слике кроз Грав систем за кеширање чак иако нема промена на њима"
+ IMAGES_DEBUG: "Image debug watermark"
+ IMAGES_DEBUG_HELP: "Показује преклапање преко слика које приказују густину пиксела када ради са, на пример, ретина екранима"
+ IMAGES_SEOFRIENDLY: "SEO-оптимизована имена слика"
+ IMAGES_SEOFRIENDLY_HELP: "Када је активирано, прво је приказано име слике а затим и мањи hash који указује на предузете операције"
+ UPLOAD_LIMIT: "Лимит за величину учитаног фајла"
+ UPLOAD_LIMIT_HELP: "Подешавање максималне величине фајла у бајтовима (0 да нема ограничења)"
+ ENABLE_MEDIA_TIMESTAMP: "Омогући временске ознаке на медијима"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Додаје временску ознаку засновану на датуму последње измене за сваки појединачни медијски фајл"
+ SESSION: "Сесија"
+ SESSION_ENABLED_HELP: "Омогућава подршку за сесије у Граву"
+ TIMEOUT: "Време трајања"
+ TIMEOUT_HELP: "Подешава време трајања сесије у секундама"
+ SESSION_NAME_HELP: "Идентификатор који се користи за креирање имена за колачић сесије"
+ SESSION_UNIQUENESS: "Јединствени стринг"
+ SESSION_UNIQUENESS_HELP: "MD5 hash основне Grav's путање, нпр. `GRAV_ROOT` (default) или базиран на случајном `security.salt` стрингу."
+ ABSOLUTE_URLS: "Апсолутни URL-ови"
+ ABSOLUTE_URLS_HELP: "Апсолутни или релативни URL-ови за `base_url`"
+ PARAMETER_SEPARATOR: "Сепаратор параметара"
+ PARAMETER_SEPARATOR_HELP: "Сепаратор за прослеђене параметре који може бити промењен за Apache на Windows-у"
+ TASK_COMPLETED: "Задатак извршен"
+ EVERYTHING_UP_TO_DATE: "Све је ажурирано"
+ UPDATES_ARE_AVAILABLE: "доступно је ажурирање(а)"
+ IS_AVAILABLE_FOR_UPDATE: "је доступно за ажурирање"
+ IS_NOW_AVAILABLE: "је сада доступно"
+ CURRENT: "Важећи"
+ UPDATE_GRAV_NOW: "Ажурирај Грав сада"
+ GRAV_SYMBOLICALLY_LINKED: "Грав је симболично ликован. Ажурирање неће бити доступно"
+ UPDATING_PLEASE_WAIT: "Ажурирам... молим вас сачекајте, преузимање у току"
+ OF_THIS: "од овогa"
+ OF_YOUR: "од твога"
+ HAVE_AN_UPDATE_AVAILABLE: "има доступно ажурирање"
+ SAVE_AS: "Сачувај као"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Да ли сте сигурни да желите да обришете ову страницу и све њене подстранице? Уколико је страница преведена на друге језике, ти преводи ће бити сачувани и морају се посебно обрисати. Иначе би фолдер странице био обрисан заједно са припадајућим подстраницама. Ова акција не може бити поништена."
+ AND: "и"
+ UPDATE_AVAILABLE: "Ажурирање је доступно"
+ METADATA_KEY: "Кључ (нпр. 'Кључне речи')"
+ METADATA_VALUE: "Вредност (нпр. 'Блог, Грав')"
+ USERNAME_HELP: "Корисничко име би требало да има између 3 и 16 карактера, укључујући мала слова, бројеве, подцртицу и цртицу. Велика слова, размаци и специјални карактери нису дозвољени"
+ FULLY_UPDATED: "Потпуно ажурирано"
+ SAVE_LOCATION: "Сачувај локацију"
+ PAGE_FILE: "Шаблон странице"
+ PAGE_FILE_HELP: "Име фајла са шаблоном странице, и подразумевани шаблон приказа за ову страницу"
+ NO_USER_ACCOUNTS: "Нема пронађених корисничких налога, молим вас да креирате први..."
+ NO_USER_EXISTS: "Ниједан локални корисник постоји за овај налог, не може да сачува..."
+ REDIRECT_TRAILING_SLASH: "Коса црта / за преусмеравање"
+ REDIRECT_TRAILING_SLASH_HELP: "Изводи 301 преусмеравање уместо транспаретног руковања са косим цртама у URI-јима."
+ DEFAULT_DATE_FORMAT: "Формат датума на страницама"
+ DEFAULT_DATE_FORMAT_HELP: "Формат датума на страницама који користи Грав. Подразумевано, Грав покушава да погоди ваш формат датума, међутим ви можете одредити формат коришћењен PHP синтаксе за датуме (нпр.: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Одреди аутоматски"
+ IGNORE_FILES: "Игонориши фајлове"
+ IGNORE_FILES_HELP: "Одређени фајлови који се не узимају у обзир приликом процесирање страница"
+ IGNORE_FOLDERS: "Игнориши фолдере"
+ IGNORE_FOLDERS_HELP: "Одређени фолдери који се не узимају у обзир приликом процесирања страница"
+ HIDE_EMPTY_FOLDERS: "Сакриј празне фолдере"
+ HIDE_EMPTY_FOLDERS_HELP: "Ако фолдер нема .md фајл, она треба бити скривена у навигацији и не може се прећи на њу"
+ HTTP_ACCEPT_LANGUAGE: "Подеси језик из веб претраживача"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Можете изабрати да покушате да подесите језик базиран на `http_accept_language` тагу у заглављу из веб претраживача"
+ OVERRIDE_LOCALE: "Заобиђи локалне поставке"
+ OVERRIDE_LOCALE_HELP: "Заобилазе се локалне поставке у PHP-у засноване на тренутном језику"
+ REDIRECT: "Преусмеравање Странице"
+ REDIRECT_HELP: "Унесите путању странице или спољни URL за ову страницу да бу је преусмерили на нпр. `/нека/путања` или `http://некисајт.срб`"
+ PLUGIN_STATUS: "Статус Додатка"
+ INCLUDE_DEFAULT_LANG: "Укључи подразумевани језик"
+ INCLUDE_DEFAULT_LANG_HELP: "Ово ће припремити све URL адресе у подразумеванoм језику са подразумеваним језиком нпр. `/sr/blog/moj-post`"
+ PAGES_FALLBACK_ONLY: "Само fallback"
+ PAGES_FALLBACK_ONLY_HELP: "Само 'fallback' за проналажење садржаја странице преко подржаних језика, подразумевано понашање је приказивање било којег пронађеног језика ако недостаје активни језик"
+ ALLOW_URL_TAXONOMY_FILTERS: "Филтери за URL таксономије"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Колекција заснована на страници омогућава да филрирате преко `/taxonomy:value`."
+ REDIRECT_DEFAULT_CODE: "Подразумевани код за преусмеравање"
+ REDIRECT_DEFAULT_CODE_HELP: "HTTP статусни код који се користи за преусмеравање"
+ IGNORE_HIDDEN: "Игнориши скривено"
+ IGNORE_HIDDEN_HELP: "Игнориши све фајлове и фолдере који почињу са ТАЧКОМ"
+ WRAPPED_SITE: "Сајт унутар друге платформе"
+ WRAPPED_SITE_HELP: "Да би теме/додаци знали да ли Грав ради унутар друге платформе"
+ FALLBACK_TYPES: "Дозвољени fallback типови"
+ FALLBACK_TYPES_HELP: "Дозвољени типови фајлова који се могу наћи приликом приступа преко Путање странице. Подразумевано за било који подржани тип медија."
+ INLINE_TYPES: "Типови фајлова за директан приказ"
+ INLINE_TYPES_HELP: "Листа типова фајлова који би требали да буду директно приказани уместо да се преузимају"
+ APPEND_URL_EXT: "Додај URL екстензије"
+ APPEND_URL_EXT_HELP: "Додаће прилагођену екстезију URL-у странице. Треба напоменути да ово значи да ће Грав потражити `..twig` шаблон"
+ PAGE_MODES: "Модови Страница"
+ PAGE_TYPES: "Типови страница"
+ PAGE_TYPES_HELP: "Одређује типове страница које Грав подржава, а редослед одређује на који тип ће се вратити ако је захтев двосмислен"
+ ACCESS_LEVELS: "Нивои приступа"
+ GROUPS: "Групе"
+ GROUPS_HELP: "Листа група у којима је корисник члан"
+ ADMIN_ACCESS: "Приступ Админа"
+ SITE_ACCESS: "Приступ сајту"
+ INVALID_SECURITY_TOKEN: "Неисправанa сигурносна ознака"
+ ACTIVATE: "Активирај"
+ TWIG_UMASK_FIX: "Исправка Umask-a"
+ TWIG_UMASK_FIX_HELP: "Подразумевано Twig креира кеширане фајлове као 0755, а исправком ово прелази у 0775"
+ CACHE_PERMS: "Овлашћења кеша"
+ CACHE_PERMS_HELP: "Подразумевања овлашења за кеш фолдер. Обично је 0755 или 0775 у зависности од поставке"
+ REMOVE_SUCCESSFUL: "Уклањање успело"
+ REMOVE_FAILED: "Уклањање неуспело"
+ HIDE_HOME_IN_URLS: "Сакриј путању за Почетак у URL-овима"
+ HIDE_HOME_IN_URLS_HELP: "Осигураће да подразумевана путања за било коју Почетну страницу да не упућује као уобичајеној путањи за Почетак"
+ TWIG_FIRST: "Прво процесирај Twig"
+ TWIG_FIRST_HELP: "Уколико активирате процесирање Twig странице, онда можете подесити да се Twig процесира пре или после markdown-a"
+ SESSION_SECURE: "Осигурана"
+ SESSION_SECURE_HELP: "Уколико је укључено, указује да комуникација за овај колаћић мора да се обавља преко криптоване везе. УПОЗОРЕЊЕ: ово треба укључити на сајтовима који искључиво користе HTTPS"
+ SESSION_HTTPONLY: "Само HTTP"
+ SESSION_HTTPONLY_HELP: "Уколико је укључено, указује да колачићи треба користити само преко HTTP-a, и да JavaScript модификације нису дозвољене"
+ REVERSE_PROXY: "Повратни Прокси"
+ REVERSE_PROXY_HELP: "Укључи ову опцију уколико приступате иза повратног проксија и имате проблем са URL-овима који имају неисправне портове"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Неисправан frontmatter, није могуће снимити"
+ ADD_FOLDER: "Додај фолдер"
+ PROXY_URL: "Прокси URL"
+ PROXY_URL_HELP: "Унесите HOST или IP адресу и PORT прокси сервера"
+ NOTHING_TO_SAVE: "Нема ништа за сачувати"
+ FILE_ERROR_ADD: "Појавила се грешка при покушају додавања фајла"
+ FILE_ERROR_UPLOAD: "Појавила се грешка при покушају учитавања фајла"
+ FILE_UNSUPPORTED: "Неподржани тип фајла"
+ ADD_ITEM: "Додај ставку"
+ FILE_TOO_LARGE: "Фајл је превелик да би био учитан, максиално дозвољена величина је %s у складу са вашим поставкама PHP-а. Повећајте `post_max_size` PHP опцију"
+ INSTALLING: "Инсталирање"
+ LOADING: "Учитавање.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "Следеће зависности прво морају да буду задовољене:"
+ ERROR_INSTALLING_PACKAGES: "Грешка приликом инсталације пакета"
+ INSTALLING_DEPENDENCIES: "Инсталација зависних пакета..."
+ INSTALLING_PACKAGES: "Инсталација пакета.."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Пакет(и) је(су) успешно инсталиран(и)."
+ READY_TO_INSTALL_PACKAGES: "Спреман за инсталацију пакета"
+ PACKAGES_NOT_INSTALLED: "Пакети нису инсталирани"
+ PACKAGES_NEED_UPDATE: "Пакети су већ инсталирани, али су превише стари"
+ PACKAGES_SUGGESTED_UPDATE: "Пакети су већ инсталирани, и њихове верзије су у реду, али ће бити ажурирани да би све било најновије"
+ REMOVE_THE: "Уклони %s"
+ CONFIRM_REMOVAL: "Да ли сте сигурни да желите да обришете овај %s?"
+ REMOVED_SUCCESSFULLY: "%s je успешно уклоњен"
+ ERROR_REMOVING_THE: "Грешка приликом уклањања %s"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s захтева следеће зависности, које нису потребне за друге инсталиране пакете. Уколико не желите да их користите, можете их директно уклонити одавде."
+ READY_TO_UPDATE_PACKAGES: "Спреман за ажурирање пакета"
+ ERROR_UPDATING_PACKAGES: "Грешка приликом ажурирања пакета"
+ UPDATING_PACKAGES: "Ажурирање пакета.."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Пакет(и) је(су) успешно ажурирани."
+ UPDATING: "Ажурирање"
+ GPM_RELEASES: "GPM верзије"
+ GPM_RELEASES_HELP: "Изаберите 'Тesting' за инсталирање бета или пробне верзије"
+ GPM_METHOD: "Метода за даљинско добављање"
+ GPM_METHOD_HELP: "Када је подешено на Ауто, Грав ће одредити да ли је fopen доступан и користиће га, или ће у супротном прећи на cURL. Да би одредили употребну једног или другог измените подешавање."
+ GPM_VERIFY_PEER: "Даљинска верификација Peer-a (SSL)"
+ GPM_VERIFY_PEER_HELP: "Неки провајдери изгледа неуспевају да провере getgrav.org SSL сертификате, чинећи да GPM је ради. Уколико је то случај са вама, искључивање ове опције вам може помоћи"
+ AUTO: "Ауто"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Стабилна"
+ TESTING: "Радна"
+ FRONTMATTER_PROCESS_TWIG: "Процес управљања Twig-ом на генеричким страницама"
+ FRONTMATTER_PROCESS_TWIG_HELP: "Када је активирана можете користити Twig конфугирационе променљиве у креирањеу страница"
+ FRONTMATTER_IGNORE_FIELDS: "Игнориши frontmatter поља"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Одрешена frontmatter поља могу садржати Twig али не треба да буду процесерана, попут 'образаца'"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Пакет %s је успешно инсталиран"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Редослед матичних страница, сортирање искључено"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Страница није видиљива, сортирање искључено"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Сортирање преко админа није подржано зато што има ише од 200 подстраница"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Сортирање страница је искључен за ову страницу зато што Нумерички префикс фолдера није омогућен"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "НАПОМЕНА: Не можете додати медија фајлове све док не сачувате страницу. Само кликните на 'Сачувај' на врху"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "НАПОМЕНА: Страница прво мора бити сачувана да би могли да учитате фајлове у њу."
+ DROP_FILES_HERE_TO_UPLOAD: "Пренесите своје фајлове овде или кликните овде"
+ INSERT: "Убаци"
+ UNDO: "Опозови"
+ REDO: "Понови"
+ HEADERS: "Заглавља"
+ BOLD: "Подебљано"
+ ITALIC: "Курзив"
+ STRIKETHROUGH: "Прецртано"
+ SUMMARY_DELIMITER: "Граничник сажетка"
+ LINK: "Линк"
+ IMAGE: "Слика"
+ BLOCKQUOTE: "Цитат"
+ UNORDERED_LIST: "Несортирана листа"
+ ORDERED_LIST: "Сортирана листа"
+ EDITOR: "Уређивач"
+ PREVIEW: "Преглед"
+ FULLSCREEN: "Цео екран"
+ MODULAR: "Модуларно"
+ MODULAR_SETUP: "Модуларно подешавање"
+ NON_ROUTABLE: "Non-Routable"
+ NON_MODULAR: "Не-модуларно"
+ NON_VISIBLE: "Не-видљиво"
+ NON_PUBLISHED: "Не-објављено"
+ CHARACTERS: "карактери"
+ PUBLISHING: "Објављивање"
+ NOTIFICATIONS: "Обавештавања"
+ MEDIA_TYPES: "Типови медија"
+ IMAGE_OPTIONS: "Подешавање слика"
+ MIME_TYPE: "Mime типови"
+ THUMB: "Сличице"
+ TYPE: "Тип"
+ FILE_EXTENSION: "Екстензије фајлова"
+ LEGEND: "Легенда странице"
+ MEMCACHE_SERVER: "Memcache сервер"
+ MEMCACHE_SERVER_HELP: "Адреса Memcache сервера"
+ MEMCACHE_PORT: "Memcache порт"
+ MEMCACHE_PORT_HELP: "Серверски порт за Memcache"
+ MEMCACHED_SERVER: "Memcached сервер"
+ MEMCACHED_SERVER_HELP: "Адреса Memcached сервера"
+ MEMCACHED_PORT: "Memcached порт"
+ MEMCACHED_PORT_HELP: "Порт Memcached сервера"
+ REDIS_SERVER: "Redis сервер"
+ REDIS_SERVER_HELP: "Адреса Redis сервера"
+ REDIS_PORT: "Redis порт"
+ REDIS_PORT_HELP: "Порт Redis сервера"
+ REDIS_PASSWORD: "Redis лозинка/тајна"
+ ALL: "Све"
+ FROM: "од"
+ TO: "за"
+ RELEASE_DATE: "Датум објаве"
+ SORT_BY: "Сортирано по"
+ RESOURCE_FILTER: "Филтер..."
+ FORCE_SSL: "Обавезан SSL"
+ FORCE_SSL_HELP: "Глобално обавезна употреба SSL-a, уколико је укључено а сајту се приступа преко HTTP-а, Грав ће преусмерити на HTTPS страницу"
+ NEWS_FEED: "Трака са вестима"
+ EXTERNAL_URL: "Спољни URL"
+ SESSION_PATH: "Путања сесије"
+ SESSION_PATH_HELP: "Треба користити само уколико изаберете произвољну основу URL-a (мењате домен сајта / подфолдер)"
+ CUSTOM_BASE_URL: "Произвољни основни URL"
+ CUSTOM_BASE_URL_HELP: "Уколико желите да промените домен сајта или да користите другачији подфолдер од оног који користи Грав. Пример: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: 'Не можете да користите "%s" изван страница.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Није могуће учитати фајл %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Није могуће преместити фајл %s у "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Поништи учитавање'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Да ли сте сигурни да желите да поништите учитавање?'
+ DROPZONE_DEFAULT_MESSAGE: 'Пренесите своје фајлове овде или кликните овде'
+ DROPZONE_FALLBACK_MESSAGE: 'Ваш веб претраживач не поджава "пренеси и спусти" начин учитавања фајлова.'
+ DROPZONE_FALLBACK_TEXT: 'Молим вас да користите резервни образац доле за учитавање ваших фајлова на класичан начин.'
+ DROPZONE_FILE_TOO_BIG: 'Фајл је превелик ({{filesize}}MiB). Максимална величина фајла: {{maxFilesize}}MiB.'
+ DROPZONE_INVALID_FILE_TYPE: "Не можете учитати овај тип фајлова."
+ DROPZONE_MAX_FILES_EXCEEDED: "Не можете да учитате још фајлова."
+ DROPZONE_REMOVE_FILE: "Уклони фајл"
+ DROPZONE_RESPONSE_ERROR: "Сервер је одговорио са {{statusCode}} кодом."
+ PREMIUM_PRODUCT: "Премиум"
+ ADMIN_CACHING: "Омогући кеширање Админа"
+ ADMIN_CACHING_HELP: "Кеширање Админа може бити контролисано независно од корисничког дела сајта"
+ DESTINATION_NOT_SPECIFIED: "Дестинација није одређена"
+ UPLOAD_ERR_NO_TMP_DIR: "Недостаје привремени фолдер"
+ SESSION_SPLIT: "Раздвајање сесије"
+ SESSION_SPLIT_HELP: "Независно раздвајањесесија између сајта и других додатака (попут Админа)"
+ ERROR_FULL_BACKTRACE: "Пуни приказ грешке"
+ ERROR_SIMPLE: "Једноставни приказ грешке"
+ ERROR_SYSTEM: "Системска грешка"
+ IMAGES_AUTO_FIX_ORIENTATION: "Исправи орјентацију аутоматски"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Аутоматски исправљање орјентације слике базирано на Exif подацима"
+ REDIS_SOCKET: "Redis прикључак"
+ REDIS_SOCKET_HELP: "Redis прикључак"
+ NOT_SET: "Није подешено"
+ PERMISSIONS: "Овлашћења"
+ NEVER_CACHE_TWIG: "Никада не кеширај Twig"
+ NEVER_CACHE_TWIG_HELP: "Кеширање само садржаја и процесирање Twig-a за странице сваког пута. Ингорише подешавање за twig_first."
+ ALLOW_WEBSERVER_GZIP: "Дозволи WebServer Gzip"
+ ALLOW_WEBSERVER_GZIP_HELP: "Подразумевано је искључено. Када је укључено, Gzip/Deflate компресија подешена на серверу ће радити, али http конекција неће бити затворена пре onShutDown() догађаја чинећи страницу споријом"
+ OFFLINE_WARNING: "Конекција ка GPM-у не може да се успостави"
+ CLEAR_IMAGES_BY_DEFAULT: "Чисти кеш слике подразумевано"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "Подразумевано се чисти кеш процесиране слике, ово може бити искључено"
+ CLI_COMPATIBILITY: "CLI компатибилност"
+ CLI_COMPATIBILITY_HELP: "Осигурава да се користе само не-непроменљиви кеш драјвери (file, redis, memcache, итд.)"
+ REINSTALL_PLUGIN: "Реинсталирај Додатак"
+ REINSTALL_THEME: "Реинсталирај Тему"
+ REINSTALL_THE: "Реинсталирај %s"
+ CONFIRM_REINSTALL: "Да ли сте сигурни да желите да реинсталирате %s?"
+ REINSTALLED_SUCCESSFULLY: "%s реинсталиран успешно"
+ ERROR_REINSTALLING_THE: "Грешка приликом реинсталирања %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Пакет %s је успешно реинсталиран"
+ REINSTALLATION_FAILED: "Реинсталација неуспела"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "Инсталирана верзија није и најновија. Кликом на Настави ћете уклонити тренутну верзију и инсталирати најновију доступну верзију"
+ TOOLS: "Алати"
+ DIRECT_INSTALL: "Директна инсталација"
+ NO_PACKAGE_NAME: "Име пакета није одређено"
+ PACKAGE_EXTRACTION_FAILED: "Распакивање пакета није успело"
+ NOT_VALID_GRAV_PACKAGE: "Није исправан Грав пакет"
+ NAME_COULD_NOT_BE_DETERMINED: "Име није могло бити утврђено"
+ CANNOT_OVERWRITE_SYMLINKS: "Није могуће преписивање симболичких линкова"
+ ZIP_PACKAGE_NOT_FOUND: "ZIP пакет није пронађен"
+ GPM_OFFICIAL_ONLY: "Само званичини GPM"
+ GPM_OFFICIAL_ONLY_HELP: "Дозвољава директну инсталацију само са званичне GPM ризнице."
+ NO_CHILD_TYPE: "Нема типа подстранице за овај rawroute"
+ SORTABLE_PAGES: "Странице које се могу сортирати:"
+ UNSORTABLE_PAGES: "Странце које се не могу сортирати"
+ ADMIN_SPECIFIC_OVERRIDES: "Посебна заобилажења Админа"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Редослед приказа подстраница"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "Редослед у којем ће подстранице ове странице бити приказане у шаблону 'Странице' Админ додатка"
+ PWD_PLACEHOLDER: "сложени стринг од најмање 8 карактера"
+ PWD_REGEX: "Лозинка, уобичајена"
+ PWD_REGEX_HELP: "Подразумевано: Лозинка мора да садржи најмање један број и по једно Велико и мало слову, а заједно најмање 8 или више карактера"
+ USERNAME_PLACEHOLDER: "само мали слова, нпр. 'admin'"
+ USERNAME_REGEX: "Корисничко име, уобичајено"
+ USERNAME_REGEX_HELP: "Подразумевано: дозвољена су само мала слова, бројеви, цртица и подцртица. 3 - 16 карактера"
+ CONTENT_PADDING: "Одстојање око садржаја"
+ CONTENT_PADDING_HELP: "Укључује/искључује одстојање око садржаја да би добили више простора"
+ ENABLE_AUTO_METADATA: "Аутоматски metadata из Exif-a"
+ ENABLE_AUTO_METADATA_HELP: "Аутоматски генерисани metadata фајлови за слике са exif информацијама"
+ 2FA_TITLE: "2-степена Аутентификација"
+ 2FA_INSTRUCTIONS: "##### 2-степена Аутентификација\nУкључили сте **2FA** за овај налог. Молимо вас да користите своју **2FA** апликацију да би унели **6-цифарни код** да би завршили процес пријављивања."
+ 2FA_REGEN_HINT: "Да бисте повратили лозинку, потребно је да ажурирате апликацију за потврду идентитета"
+ 2FA_LABEL: "Админ приступ"
+ 2FA_FAILED: "Неисправан 2-степени аутентификациони код, молимо вас покушајте поново..."
+ 2FA_ENABLED: "2FA укључена"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "2FA шифра"
+ 2FA_SECRET_HELP: "Скенирајте овај QR код са вашом [апликацијом за аутентификацију](https://learn.getgrav.org/admin-panel/2fa#apps). Не би било лоше да направите резервну копију ваше лозинке на некој сигурној локацији, у случају да морате да поново инсталирате своју апликацију. Проверите [Грав документацију](https://learn.getgrav.org/admin-panel/2fa) за више информација "
+ 2FA_REGENERATE: "Обнови"
+ FORCE_LOWERCASE_URLS: "Обавезни URL-ови са малим словима"
+ FORCE_LOWERCASE_URLS_HELP: "Грав ће подразумевано подесити све slug-ове и путање да буду са малим словима. Уколико ово подесите на false, моћи ћете да користите slug-ове и путање и са Великим словима"
+ INTL_ENABLED: "Интеграција Intl модула"
+ INTL_ENABLED_HELP: "Користи Intl PHP модул и ради сређивања и сортирања колекције која се базира на UTF8"
+ VIEW_SITE_TIP: "Погледај сајт"
+ TOOLS_DIRECT_INSTALL_TITLE: "Директна инсталација Грав пакета"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "Инсталација пакета преко директног учитавања ZIP архива"
+ TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Можете лако инсталирати одговарајућу Грав тему, додатак, или чак нову верзију Грава у форми Zip пакета помоћу ове методе. Овај пакет не мора да се региструје преко GPM-а и омогућава вам да једноставно вратите претходну верзију или да инсталирате нову ради тестирања."
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Инсталирај пакете преко удаљене URL референце"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Као другу могућност, такође можете да повежете цели URL са ZIP пакетом и инсталирате га преко ове удаљене URL адресе."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Учитај и инсталирај"
+ ROUTE_OVERRIDES: "Заобилазна путања"
+ ROUTE_DEFAULT: "Подразумевана путања"
+ ROUTE_CANONICAL: "Подразумевана путања"
+ ROUTE_ALIASES: "Алијаси путање"
+ OPEN_NEW_TAB: "Отвори у новом језичку"
+ PAGEMEDIA_RESIZER: "> Следеће подешавање се односи на слике које су учитане преко странице медија. Промени ширину/висину ће аутоматски пропорционално смањити слику уколико прелази лимите постављене при уносу. Резолуција мин и макс. дефинише распоне величине за учитане слике. Поставите вредност поља на 0 да би спречили измене."
+ SESSION_INITIALIZE: "Иницирање Сесије"
+ SESSION_INITIALIZE_HELP: "Чини да Grav покрене сесију. Ова опција је потребна да би била могућа интеракција са корисником, као што је пријава, форме, итд. Овим подешавањем се не утиче на Админ додатак."
+ STRICT_YAML_COMPAT: "YAML компатибилност"
+ STRICT_YAML_COMPAT_HELP: "Прелази назад на Symfony 2.4 YAML парсер уколико подразумевани или 3.4 парсер не ради"
+ STRICT_TWIG_COMPAT: "Twig Компатибилност"
+ STRICT_TWIG_COMPAT_HELP: "Омогућава застарелу Twig autoescape опцију. Када је деактивирана, потребан је |raw филтер за добијање HTML-a јер ће Twig аутоматски ексивирати излаз"
+ SCHEDULER: "Планер"
+ SCHEDULER_INSTALL_INSTRUCTIONS: "Упуство за инсталацију"
+ SCHEDULER_INSTALLED_READY: "Инсталирај и спреман"
+ SCHEDULER_CRON_NA: "Cron није доступан"
+ SCHEDULER_NOT_ENABLED: "Није активиран"
+ SCHEDULER_SETUP: "Подешавање Планера"
+ SCHEDULER_INSTRUCTIONS: "Грав Планер вам омогућава да креирате и планирате различите послове. Он такође омогућава метод за интеграцију у Grav додатке програмски и аутоматски креираних задатака за њихово повремено покретање."
+ SCHEDULER_POST_INSTRUCTIONS: "Да би омогућили функционалност Планера, морате додати Grav Планер у ваш системски crontab фајл. Покренути горе наведену комаду у терминалу да би је аутоматски додали. Једном сачувану, освежите ову страницу да би видели статус Спреман (Ready)."
+ SCHEDULER_JOBS: "Послови прилагођеног планера"
+ SCHEDULER_STATUS: "Статус планера"
+ SCHEDULER_RUNAT: "Покрени у"
+ SCHEDULER_RUNAT_HELP: "Cron форматирана 'at' синтакса"
+ SCHEDULER_OUTPUT: "Излазни фајл"
+ SCHEDULER_OUTPUT_HELP: "Путања/име излазног фајла (из корена Грав инсталације)"
+ SCHEDULER_OUTPUT_TYPE: "Тип излаза"
+ SCHEDULER_OUTPUT_TYPE_HELP: "Или додај у фајл при сваком покретању, или поново креирај фајл при сваком покретању"
+ SCHEDULER_EMAIL: "Е-пошта"
+ SCHEDULER_EMAIL_HELP: "Адреса е-поште на коју треба послати излаз. НАПОМЕНА: потребно је да је излазни фајл подешен"
+ SECURITY: "Сигурност"
+ XSS_SECURITY: "XSS Сигурност за садржај"
+ XSS_WHITELIST_PERMISSIONS: "Бела листа дозвола"
+ XSS_WHITELIST_PERMISSIONS_HELP: "Корисници са овим дозволама ће прескочити XSS правила приликом снимања садржаја"
+ XSS_ON_EVENTS: "Филтрирај догађаје"
+ XSS_INVALID_PROTOCOLS: "Филтрирај неправилне протоколе"
+ XSS_INVALID_PROTOCOLS_LIST: "Листа неправилних протокола"
+ XSS_MOZ_BINDINGS: "Филтрирај Moz привеске"
+ XSS_HTML_INLINE_STYLES: "Филтрирај HTML inline стилове"
+ XSS_DANGEROUS_TAGS: "Филтрирај опасне HTML тагове"
+ XSS_DANGEROUS_TAGS_LIST: "Листа опасних HTML тагова"
+ XSS_ONSAVE_ISSUE: "Снимање неуспело: откривен XSS проблем..."
+ XSS_ISSUE: "НАПОМЕНА: Grav је пронашао потенцијалне XSS проблеме у %s"
+ UPLOADS_SECURITY: "Сигурност при преузимању"
+ UPLOADS_DANGEROUS_EXTENSIONS: "Опасна проширења"
+ UPLOADS_DANGEROUS_EXTENSIONS_HELP: "Блокирајте ова проширења приликом преузимања без обзира на одобрене МIME типове"
+ REPORTS: "Извештаји"
+ LOGS: "Дневници"
+ LOG_VIEWER_FILES: "Прегледач фајлова дневника"
+ LOG_VIEWER_FILES_HELP: "Фајлови у /logs/ који ће бити доступни за преглед у Алати - Дневници. e.g. 'grav' = /logs/grav.log"
+ BACKUPS_STORAGE_PURGE_TRIGGER: "Окидач за уклањање резервне копије"
+ BACKUPS_MAX_COUNT: "Максимални број резервних копија"
+ BACKUPS_MAX_COUNT_HELP: "0 за неограничено"
+ BACKUPS_MAX_SPACE: "Максимални простор за резервну копију"
+ BACKUPS_MAX_RETENTION_TIME: "Максимално време задржавања"
+ BACKUPS_MAX_RETENTION_TIME_APPEND: "у данима"
+ BACKUPS_PROFILE_NAME: "Назив резервне копије"
+ BACKUPS_PROFILE_ROOT_FOLDER: "Корени фолдер"
+ BACKUPS_PROFILE_ROOT_FOLDER_HELP: "Може бити апсолутна путања или ток"
+ BACKUPS_PROFILE_EXCLUDE_PATHS: "Искључи путање"
+ BACKUPS_PROFILE_EXCLUDE_PATHS_HELP: "Апсолутна путање за искључивање, једну на свакој линији"
+ BACKUPS_PROFILE_EXCLUDE_FILES: "Искључи фајлове"
+ BACKUPS_PROFILE_EXCLUDE_FILES_HELP: "Поједини фајлови или фолдери за искључивање, један по линији"
+ BACKUPS_PROFILE_SCHEDULE: "Омогући заказани посао"
+ BACKUPS_PROFILE_SCHEDULE_AT: "Покрени заказани посао"
+ COMMAND: "Наредба"
+ EXTRA_ARGUMENTS: "Додатни аргументи"
diff --git a/user/plugins/admin/languages/sv.yaml b/user/plugins/admin/languages/sv.yaml
new file mode 100644
index 0000000..f4f816e
--- /dev/null
+++ b/user/plugins/admin/languages/sv.yaml
@@ -0,0 +1,632 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Detta är en betaversion! Använd i produktion på egen risk..."
+ ADMIN_REPORT_ISSUE: "Hittat ett fel? Vänligen rapportera det på GitHub."
+ EMAIL_FOOTER: "Powered by Grav - The Modern Flat File CMS"
+ LOGIN_BTN: "Logga in"
+ LOGIN_BTN_FORGOT: "Glömt"
+ LOGIN_BTN_RESET: "Återställ Lösenord"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Skicka återställningsinstruktioner"
+ LOGIN_BTN_CLEAR: "Rensa Formulär"
+ LOGIN_BTN_CREATE_USER: "Skapa Användare"
+ LOGIN_LOGGED_IN: "Inloggning lyckades"
+ LOGIN_FAILED: "Inloggning misslyckades"
+ LOGGED_OUT: "Utloggad"
+ RESET_NEW_PASSWORD: "Vänligen ange ett nytt lösenord …"
+ RESET_LINK_EXPIRED: "Återställningslänken är inte giltig, försök igen"
+ RESET_PASSWORD_RESET: "Lösenordet har återställts"
+ RESET_INVALID_LINK: "Återställningslänken är inte giltig, försök igen"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Instruktioner för att återställa ditt lösenord har skickats via e-post till %s"
+ FORGOT_FAILED_TO_EMAIL: "Misslyckades att skicka instruktioner via e-post, försök igen senare"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Kan inte återställa lösenord för %s, e-postadress saknas"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Användare med användarnamn %s finns inte"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Kan inte återställa lösenord. Denna webbplats är inte konfigurerad för att skicka e-post"
+ FORGOT_EMAIL_SUBJECT: "%s Begäran om lösenordsåterställning"
+ FORGOT_EMAIL_BODY: "
Återställning av lösenord
Hej %1$s,
En begäran gjordes att återställa ditt lösenord på %4$s.
"
+ MANAGE_PAGES: "Hantera sidor"
+ CONFIGURATION: "Inställningar"
+ PAGES: "Sidor"
+ PLUGINS: "Tillägg"
+ PLUGIN: "Tillägg"
+ THEMES: "Teman"
+ LOGOUT: "Logga ut"
+ BACK: "Tillbaka"
+ NEXT: "Nästa"
+ PREVIOUS: "Föreg."
+ ADD_PAGE: "Lägg till sida"
+ ADD_MODULAR: "Lägg till Modulär"
+ MOVE: "Flytta"
+ DELETE: "Radera"
+ UNSET: "Obestämt"
+ VIEW: "Visa"
+ SAVE: "Spara"
+ NORMAL: "Normal"
+ EXPERT: "Expert"
+ EXPAND_ALL: "Visa allt"
+ COLLAPSE_ALL: "Minimera alla"
+ ERROR: "Fel"
+ CLOSE: "Stäng"
+ CANCEL: "Avbryt"
+ CONTINUE: "Fortsätt"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Bekräftelse krävs"
+ MODAL_CHANGED_DETECTED_TITLE: "Ändringar har upptäckts"
+ MODAL_CHANGED_DETECTED_DESC: "Du har ändringar som inte sparats. Är du säker du vill lämna utan att spara?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Bekräftelse krävs"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Är du säker du vill ta bort denna fil? Denna åtgärd kan inte ångras."
+ ADD_FILTERS: "Lägg till filter"
+ SEARCH_PAGES: "Sök sidor"
+ VERSION: "Version"
+ WAS_MADE_WITH: "Gjordes med"
+ BY: "Av"
+ UPDATE_THEME: "Uppdatera tema"
+ UPDATE_PLUGIN: "Uppdatera tillägg"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "av detta tema är nu tillgänglig"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "av detta tillägg finns nu tillgänglig"
+ AUTHOR: "Skapare"
+ HOMEPAGE: "Hemsida"
+ DEMO: "Demo"
+ BUG_TRACKER: "Felrapporter"
+ KEYWORDS: "Sökord"
+ LICENSE: "Licens"
+ DESCRIPTION: "Beskrivning"
+ README: "Information"
+ REMOVE_THEME: "Ta bort tema"
+ INSTALL_THEME: "Installera tema"
+ THEME: "Tema"
+ BACK_TO_THEMES: "Tillbaka till teman"
+ BACK_TO_PLUGINS: "Tillbaka till tillägg"
+ CHECK_FOR_UPDATES: "Sök efter Uppdateringar"
+ ADD: "Lägg till"
+ CLEAR_CACHE: "Rensa cacheminne"
+ CLEAR_CACHE_ALL_CACHE: "All Cache"
+ CLEAR_CACHE_ASSETS_ONLY: "Endast filer"
+ CLEAR_CACHE_IMAGES_ONLY: "Endast bilder"
+ CLEAR_CACHE_CACHE_ONLY: "Endast cache"
+ CLEAR_CACHE_TMP_ONLY: "Endast Tmp"
+ DASHBOARD: "Dashboard"
+ UPDATES_AVAILABLE: "Uppdateringar tillgängliga"
+ DAYS: "Dagar"
+ UPDATE: "Uppdatera"
+ BACKUP: "Säkerhetskopiera"
+ BACKUPS: "Säkerhetskopior"
+ BACKUP_NOW: "Säkerhetskopiera nu"
+ BACKUPS_STATS: "Statistik för säkerhetskopiering"
+ BACKUPS_HISTORY: "Historik för säkerhetskopiering"
+ BACKUPS_PURGE_CONFIG: "Inställningar för rensning av säkerhetskopior"
+ BACKUPS_PROFILES: "Säkerhetskopieringsprofiler"
+ BACKUPS_COUNT: "Antal säkerhetskopior"
+ BACKUPS_PROFILES_COUNT: "Antal profiler"
+ BACKUPS_TOTAL_SIZE: "Använt utrymme"
+ BACKUPS_NEWEST: "Senaste säkerhetskopia"
+ BACKUPS_OLDEST: "Äldsta säkerhetskopia"
+ BACKUPS_PURGE: "Rensa"
+ BACKUPS_NOT_GENERATED: "Inga säkerhetskopior har genererats ännu..."
+ BACKUPS_PURGE_NUMBER: "Använder %s av %s utrymmen för säkerhetskopior"
+ BACKUPS_PURGE_TIME: "%s dagar av säkerhetskopior kvar"
+ BACKUPS_PURGE_SPACE: "Använder %s av %s"
+ BACKUP_DELETED: "Säkerhetskopan har tagits bort"
+ BACKUP_NOT_FOUND: "Säkerhetskopian hittades inte"
+ BACKUP_DATE: "Datum för säkerhetskopia"
+ STATISTICS: "Statistik"
+ TODAY: "Idag"
+ WEEK: "Vecka"
+ MONTH: "Månad"
+ LATEST_PAGE_UPDATES: "Senaste siduppdateringar"
+ MAINTENANCE: "Underhåll"
+ UPDATED: "Uppdaterad"
+ MON: "Mån"
+ TUE: "Tis"
+ WED: "Ons"
+ THU: "Tors"
+ FRI: "Fre"
+ SAT: "Lör"
+ SUN: "Sön"
+ COPY: "Kopiera"
+ EDIT: "Redigera"
+ CREATE: "Skapa"
+ GRAV_ADMIN: "Grav Admin"
+ GRAV_OFFICIAL_PLUGIN: "Grav officiellt tillägg"
+ GRAV_OFFICIAL_THEME: "Grav officiellt tema"
+ PLUGIN_SYMBOLICALLY_LINKED: "Tillägget är symboliskt länkat. Uppdateringar kommer inte att upptäckas."
+ THEME_SYMBOLICALLY_LINKED: "Temat är symboliskt länkat. Uppdateringar kommer inte att upptäckas"
+ REMOVE_PLUGIN: "Ta bort plugin"
+ INSTALL_PLUGIN: "Installera plugin"
+ AVAILABLE: "Tillgängligt"
+ INSTALLED: "Installerat"
+ INSTALL: "Installera"
+ ACTIVE_THEME: "Aktivt tema"
+ SWITCHING_TO: "Byter till"
+ SWITCHING_TO_DESCRIPTION: "Genom att byta till ett annat tema, kan vi inte garantera att alla sidtyper stöds, vilket kan orsaka fel när du försöker ladda om nämnda sidor."
+ SWITCHING_TO_CONFIRMATION: "Vill du fortsätta och växla till temat"
+ CREATE_NEW_USER: "Skapa ny användare"
+ REMOVE_USER: "Ta bort användare"
+ ACCESS_DENIED: "Åtkomst nekad"
+ ACCOUNT_NOT_ADMIN: "ditt konto har inte administratörsbehörigheter"
+ PHP_INFO: "PHP Info"
+ INSTALLER: "Installerare"
+ AVAILABLE_THEMES: "Tillgängliga teman"
+ AVAILABLE_PLUGINS: "Tillgängliga Plugins"
+ INSTALLED_THEMES: "Installerade teman"
+ INSTALLED_PLUGINS: "Installerade Tillägg"
+ BROWSE_ERROR_LOGS: "Sök i felloggar"
+ SITE: "Webbsida"
+ INFO: "Info"
+ SYSTEM: "System"
+ USER: "Användare"
+ ADD_ACCOUNT: "Lägg till konto"
+ SWITCH_LANGUAGE: "Byt språk"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Aktivering av tillägget lyckades"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Avaktivering av tillägget lyckades"
+ SUCCESSFULLY_CHANGED_THEME: "Byte av standardtema lyckades"
+ INSTALLATION_FAILED: "Installationen misslyckades"
+ INSTALLATION_SUCCESSFUL: "Installationen lyckades"
+ UNINSTALL_FAILED: "Avinstallationen misslyckades"
+ UNINSTALL_SUCCESSFUL: "Avinstallationen lyckades"
+ SUCCESSFULLY_SAVED: "Sparad"
+ SUCCESSFULLY_COPIED: "Kopierad"
+ REORDERING_WAS_SUCCESSFUL: "Omordning lyckades"
+ SUCCESSFULLY_DELETED: "Borttagen"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Byte av språk lyckades"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Du saknar behörigheter"
+ CACHE_CLEARED: "Cachen rensad"
+ METHOD: "Metod"
+ ERROR_CLEARING_CACHE: "Kunde inte rensa cache"
+ AN_ERROR_OCCURRED: "Ett fel uppstod"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Din säkerhetskopia är klar för nedladdning"
+ DOWNLOAD_BACKUP: "Hämta Backup"
+ PAGES_FILTERED: "Filtrerade sidor"
+ NO_PAGE_FOUND: "Ingen sida hittades"
+ INVALID_PARAMETERS: "Ogiltiga parametrar"
+ NO_FILES_SENT: "Inga filer skickades"
+ EXCEEDED_FILESIZE_LIMIT: "Överskred PHP konfigurationens storleksgräns för filer"
+ UNKNOWN_ERRORS: "Okända fel"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Överskred Grav konfigurationens storleksgräns för filer"
+ UNSUPPORTED_FILE_TYPE: "Filtypen stöds ej"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Det gick inte att flytta uppladdad fil"
+ FILE_UPLOADED_SUCCESSFULLY: "Filuppladdning lyckades"
+ FILE_DELETED: "Fil raderad"
+ FILE_COULD_NOT_BE_DELETED: "Filen kunde inte raderas"
+ FILE_NOT_FOUND: "Fil saknas"
+ NO_FILE_FOUND: "Ingen fil hittades"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav uppdaterades till"
+ GRAV_UPDATE_FAILED: "Grav uppdateringen misslyckades"
+ EVERYTHING_UPDATED: "Allt uppdaterades"
+ UPDATES_FAILED: "Uppdateringen misslyckades"
+ AVATAR_BY: "Avatar av"
+ AVATAR_UPLOAD_OWN: "Eller ladda upp din egna..."
+ LAST_BACKUP: "Senaste säkerhetskopiering"
+ FULL_NAME: "För-och efternamn"
+ USERNAME: "Användarnamn"
+ EMAIL: "E-postadress"
+ USERNAME_EMAIL: "Användarnamn eller e-post"
+ PASSWORD: "Lösenord"
+ PASSWORD_CONFIRM: "Bekräfta lösenord"
+ TITLE: "Titel"
+ LANGUAGE: "Språk"
+ ACCOUNT: "Konto"
+ EMAIL_VALIDATION_MESSAGE: "Måste vara en giltig e-postadress"
+ PASSWORD_VALIDATION_MESSAGE: "Lösenordet måste innehålla minst en siffra och en versal och gemen och minst 8 tecken"
+ LANGUAGE_HELP: "Ställ in favoritspråk"
+ MEDIA: "Media"
+ DEFAULTS: "Standard"
+ SITE_TITLE: "Webbplatsens titel"
+ SITE_TITLE_PLACEHOLDER: "Global titel för webbplats"
+ SITE_TITLE_HELP: "Förvald rubrik för din webbplats, används ofta i teman"
+ SITE_DEFAULT_LANG: "Förvalt språk"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Förvalt språk som används av temats tagg"
+ SITE_DEFAULT_LANG_HELP: "Förvalt språk som används av temats tagg"
+ DEFAULT_AUTHOR: "Förvald skribent"
+ DEFAULT_AUTHOR_HELP: "Förvald skribent, används ofta i teman och sidans innehåll"
+ DEFAULT_EMAIL: "Förvald e-post"
+ DEFAULT_EMAIL_HELP: "Förvald e-post att hänvisa till i teman eller sidor"
+ TAXONOMY_TYPES: "Taxonomi typer"
+ TAXONOMY_TYPES_HELP: "Taxonomi-typer måste definieras här om du vill använda dem i sidor"
+ PAGE_SUMMARY: "Sidsammanfattning"
+ ENABLED: "Aktiverad"
+ ENABLED_HELP: "Aktivera sammanfattning för sidor (sammanfattningen returnerar samma som innehållet på sidan)"
+ 'YES': "Ja"
+ 'NO': "Nej"
+ SUMMARY_SIZE: "Storlek för sammanfattning"
+ SUMMARY_SIZE_HELP: "Mängden tecken av en sida att användas som sammanfattning av innehåll"
+ FORMAT: "Format"
+ FORMAT_HELP: "kort = Använd den första förekomsten av avgränsare eller storlek. längre = sammanfattande avgränsare kommer ignoreras"
+ SHORT: "Kort"
+ LONG: "Lång"
+ DELIMITER: "Avgränsare"
+ DELIMITER_HELP: "Avgränsare för sammanfattning (förvalt '===')"
+ METADATA: "Metadata"
+ METADATA_HELP: "Standardvärden för metadata som ska visas på varje sida om det inte skrivs över av sidan"
+ NAME: "Namn"
+ CONTENT: "Innehåll"
+ SIZE: "Storlek"
+ ACTION: "Åtgärd"
+ REDIRECTS_AND_ROUTES: "Omdirigeringar och rutter"
+ CUSTOM_REDIRECTS: "Anpassade Redirects"
+ CUSTOM_REDIRECTS_HELP: "vägar för omdirigering till andra sidor. Standard Regex ersättning är giltig"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/ditt/alias"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/din/omderigering"
+ CUSTOM_ROUTES: "Egna omdirigeringar"
+ CUSTOM_ROUTES_HELP: "vägar för alias till andra sidor. Standard Regex ersättning är giltig"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/ditt/alias"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/din/rutt"
+ FILE_STREAMS: "Fil strömmar"
+ DEFAULT: "Förvalt"
+ PAGE_MEDIA: "Sidmedia"
+ OPTIONS: "Alternativ"
+ PUBLISHED: "Publicerad"
+ PUBLISHED_HELP: "Som standard publiceras en sida om du inte uttryckligen anger publicerad: falskt eller via en publish_date att vara i framtiden, eller unpublish_date i det förflutna"
+ DATE: "Datum"
+ DATE_HELP: "Variabeln datum ger dig möjlighet att uttryckligen välja ett datum som associeras med sidan."
+ PUBLISHED_DATE: "Publiceringsdatum"
+ PUBLISHED_DATE_HELP: "Kan ge ett datum för automatiskt publikation."
+ UNPUBLISHED_DATE: "Icke-publicerat datum"
+ UNPUBLISHED_DATE_HELP: "Kan ge ett datum för automatiskt avpublikation."
+ ROBOTS: "Robotar"
+ TAXONOMIES: "Taxonomier"
+ TAXONOMY: "Taxonomi"
+ ADVANCED: "Avancerat"
+ SETTINGS: "Inställningar"
+ FOLDER_NUMERIC_PREFIX: "Numeriskt prefix för katalog"
+ FOLDER_NUMERIC_PREFIX_HELP: "Numeriskt prefix som möjliggör manuell sortering och ökad synlighet"
+ FOLDER_NAME: "Mappnamn"
+ FOLDER_NAME_HELP: "Namnet på katalogen som lagras i filsystemet för sidan"
+ PARENT: "Förälder"
+ DEFAULT_OPTION_ROOT: "- Root -"
+ DEFAULT_OPTION_SELECT: "- Välj -"
+ DISPLAY_TEMPLATE: "Visa mall"
+ DISPLAY_TEMPLATE_HELP: "Sidtypen som översätter till vilken twig-mall som skapar sidan"
+ BODY_CLASSES: "Body klasser"
+ ORDERING: "Sortering"
+ PAGE_ORDER: "Sidordning"
+ OVERRIDES: "Överskrider"
+ MENU: "Meny"
+ MENU_HELP: "Strängen som kommer att användas i menyn. Om ej satt kommer titeln att användas."
+ SLUG: "Slug"
+ SLUG_HELP: "Variabeln slug möjliggör att ange sidans del i dess URL"
+ SLUG_VALIDATE_MESSAGE: "En slug innehåller bara små bokstäver, siffror och snedstreck"
+ PROCESS: "Processer"
+ PROCESS_HELP: "Kontrollera hur sidor bearbetas. Kan ställas per sida snarare än globalt"
+ DEFAULT_CHILD_TYPE: "Förvald typ för barn"
+ USE_GLOBAL: "Använd global"
+ ROUTABLE: "Tillgänglig"
+ ROUTABLE_HELP: "Om denna sida är tillgänglig via en URL"
+ CACHING: "Cachelagring"
+ VISIBLE: "Synlig"
+ VISIBLE_HELP: "Avgör om en sida är synlig i menyn."
+ DISABLED: "Inaktiverad"
+ ITEMS: "Poster"
+ ORDER_BY: "Sortera efter"
+ ORDER: "Sortering"
+ FOLDER: "Mapp"
+ ASCENDING: "Stigande"
+ DESCENDING: "Fallande"
+ ADD_MODULAR_CONTENT: "Lägg till modulärt innehåll"
+ PAGE_TITLE: "Sidtitel"
+ PAGE_TITLE_HELP: "Titeln på sidan"
+ PAGE: "Sida"
+ MODULAR_TEMPLATE: "Modulär mall"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Filnamn"
+ PARENT_PAGE: "Föräldersida"
+ HOME_PAGE: "Startsida"
+ HOME_PAGE_HELP: "Sidan som Grav använder som förvald landningssida"
+ DEFAULT_THEME: "Förvalt tema"
+ DEFAULT_THEME_HELP: "Välj standardtema för Grav (Antimatter är förvalt)"
+ TIMEZONE: "Tidszon"
+ TIMEZONE_HELP: "Skriv över standard tidzon på servern"
+ SHORT_DATE_FORMAT: "Kort format för visningsdatum"
+ SHORT_DATE_FORMAT_HELP: "Välj kort format för visningsdatum som används av teman"
+ LONG_DATE_FORMAT: "Långt format för visningsdatum"
+ LONG_DATE_FORMAT_HELP: "Välj långt format för visningsdatum som används av teman"
+ DEFAULT_ORDERING: "Standard sortering"
+ DEFAULT_ORDERING_HELP: "Sidor i en lista kommer att visa denna ordning om den inte överskrivits"
+ DEFAULT_ORDERING_DEFAULT: "Standard - baserat på mappnamn"
+ DEFAULT_ORDERING_FOLDER: "Mapp - baserat på prefixlöst mappnamn"
+ DEFAULT_ORDERING_TITLE: "Titel - baserad på titelfältet i sidhuvudet"
+ DEFAULT_ORDERING_DATE: "Datum - baserat på datumfält i sidhuvudet"
+ DEFAULT_ORDER_DIRECTION: "Förvald ordning"
+ DEFAULT_ORDER_DIRECTION_HELP: "Visa sorteringsordning av sidor i en lista"
+ DEFAULT_PAGE_COUNT: "Standard sidantal"
+ DEFAULT_PAGE_COUNT_HELP: "Standard för maximalt antal sidor i en lista"
+ DATE_BASED_PUBLISHING: "Datum-baserad publicering"
+ DATE_BASED_PUBLISHING_HELP: "Automatiskt (av)publicera inlägg baserat på datum"
+ EVENTS: "Händelser"
+ EVENTS_HELP: "Aktivera eller inaktivera specifika händelser. Inaktivering av dessa kan få vissa tillägg att sluta fungera"
+ REDIRECT_DEFAULT_ROUTE: "Standard för omdirigering"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Omdirigera automatiskt till en sidas standardrutt"
+ LANGUAGES: "Språk"
+ SUPPORTED: "Stöds"
+ SUPPORTED_HELP: "Kommaavgränsad lista över språkkoder (till exempel ' en, fr, de')"
+ TRANSLATIONS_ENABLED: "Stöd för översättning"
+ TRANSLATIONS_ENABLED_HELP: "Stöd för översättningar i Grav och tillägg"
+ TRANSLATIONS_FALLBACK: "Fallback för översättningar"
+ TRANSLATIONS_FALLBACK_HELP: "Reserv genom stödöversättningar om det aktiva språket inte finns"
+ ACTIVE_LANGUAGE_IN_SESSION: "Aktivt språk i session"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Lagra aktivt språk i session"
+ HTTP_HEADERS: "HTTP Headers"
+ EXPIRES: "Upphör"
+ EXPIRES_HELP: "Ställer in utgången i headern. Värdet är i sekunder."
+ CACHE_CONTROL: "Http-Cache-Control"
+ CACHE_CONTROL_HELP: "Ange ett giltigt cache-control värde såsom 'no-cache, no-store, must-revalidate'"
+ LAST_MODIFIED: "Senast ändrad"
+ LAST_MODIFIED_HELP: "Anger det sista modifierade header som kan hjälpa till att optimera proxy och webbläsarens cachelagring"
+ ETAG: "ETag"
+ ETAG_HELP: "Aktivera ETag för att identifiera när en sida har ändrats"
+ VARY_ACCEPT_ENCODING: "Variera accepterad kodning"
+ VARY_ACCEPT_ENCODING_HELP: "Ställer in ' Vary: Accept Encoding ' header att hjälpa till med proxy och CDN cachelagring"
+ MARKDOWN: "Markdown"
+ MARKDOWN_EXTRA: "Markdown extra"
+ MARKDOWN_EXTRA_HELP: "Aktivera stöd för Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ MARKDOWN_EXTRA_ESCAPE_FENCES: "Escape HTML-element i markdown extra staket"
+ MARKDOWN_EXTRA_ESCAPE_FENCES_HELP: "Escape HTML-element i markdown extra staket"
+ AUTO_LINE_BREAKS: "Automatiska radbrytningar"
+ AUTO_LINE_BREAKS_HELP: "Aktivera stöd för automatiska radbrytningar i markdown"
+ AUTO_URL_LINKS: "Automatisk URL-länkar"
+ AUTO_URL_LINKS_HELP: "Aktivera automatisk konvertering av webbadresser till HTML-hyperlänkar"
+ ESCAPE_MARKUP: "Escape markup"
+ ESCAPE_MARKUP_HELP: "Escape markup taggar i HTML-entiteter"
+ CACHING_HELP: "Global på/av för att aktivera/inaktivera cachelagring av Grav"
+ CACHE_CHECK_METHOD: "Cache metod"
+ CACHE_CHECK_METHOD_HELP: "Välj metod som Grav använder för att kontrollera om filer har ändrats."
+ CACHE_DRIVER: "Cachedrivrutin"
+ CACHE_DRIVER_HELP: "Välj vilken cache drivrutin Grav ska använda. 'Auto Detect' försöker hitta det bästa för dig"
+ CACHE_PREFIX: "Cache-prefix"
+ CACHE_PREFIX_HELP: "En identifierare för en del av Grav nyckeln. Ändra inte om du inte vet vad du gör."
+ CACHE_PREFIX_PLACEHOLDER: "Härrör från bas-URL (Åsidosätt genom att skriva slumpmässig sträng)"
+ CACHE_PURGE_JOB: "Kör schemalagda rensningsjobb"
+ CACHE_PURGE_JOB_HELP: "Med scheduler kan du regelbundet rensa ut gamla Doctrine file cachemappar"
+ CACHE_CLEAR_JOB: "Kör schemalagda rensningsjobb"
+ CACHE_CLEAR_JOB_HELP: "Med scheduler kan du regelbundet rensa Gravs cacheminne"
+ CACHE_JOB_TYPE: "Cache jobbtyp"
+ CACHE_JOB_TYPE_HELP: "Antingen rensa med 'standard' mappar cache rensning, eller med 'alla' mappar"
+ CACHE_PURGE: "Töm gamla cachar"
+ LIFETIME: "Livstid"
+ LIFETIME_HELP: "Anger cache-livstiden i sekunder. 0 = oändlig"
+ GZIP_COMPRESSION: "Gzip komprimering"
+ GZIP_COMPRESSION_HELP: "Aktivera GZip komprimering av Grav sidan för ökad prestanda."
+ TWIG_TEMPLATING: "Twig mallhantering"
+ TWIG_CACHING: "Twig cachelagring"
+ TWIG_CACHING_HELP: "Styr Twig caching mekanismen. Lämna detta aktiverat för bästa prestanda."
+ TWIG_DEBUG: "Twig debug"
+ TWIG_DEBUG_HELP: "Tillåter alternativet att inte ladda in Twig Debugger tillägget"
+ DETECT_CHANGES: "Upptäck ändringar"
+ DETECT_CHANGES_HELP: "Twig kommer automatiskt kompilera om Twig cachen om ändringar upptäcks i Twig mallar"
+ AUTOESCAPE_VARIABLES: "Autoescape variabler"
+ AUTOESCAPE_VARIABLES_HELP: "Autoescapes alla variabler. Detta kommer troligen att krascha din webbplats"
+ ASSETS: "Tillgångar"
+ CSS_PIPELINE: "CSS pipeline"
+ CSS_MINIFY: "Minifiera CSS"
+ JAVASCRIPT_PIPELINE: "JavaScript pipeline"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "Rendera JS pipeline först"
+ JAVASCRIPT_MINIFY: "Minifiera JavaScript"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Aktivera tidsstämplar på filer"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Aktivera tidsstämplade filer"
+ COLLECTIONS: "Kollektioner"
+ ERROR_HANDLER: "Felhanterare"
+ DISPLAY_ERRORS: "Visa fel"
+ LOG_ERRORS: "Logga fel"
+ LOG_ERRORS_HELP: "Logga fel i /logs mappen"
+ DEBUGGER: "Debugger"
+ DEBUGGER_HELP: "Aktivera Grav debugger och följande inställningar"
+ DEBUG_TWIG: "Twig debug"
+ DEFAULT_IMAGE_QUALITY: "Förvald bildkvalitet"
+ CACHE_ALL: "Cachelagra alla bilder"
+ IMAGES_DEBUG: "Bild debug vattenstämpel"
+ UPLOAD_LIMIT: "Uppladdningsgräns för filer"
+ UPLOAD_LIMIT_HELP: "Ange maximal överföringsstorlek i byte (0 är obegränsad)"
+ ENABLE_MEDIA_TIMESTAMP: "Aktivera tidsstämplar på media"
+ SESSION: "Session"
+ SESSION_ENABLED_HELP: "Aktivera stöd för sessioner i Grav"
+ TIMEOUT: "Timeout"
+ TIMEOUT_HELP: "Anger sessionstimeout i sekunder"
+ SESSION_NAME_HELP: "En identifierare som används för att bilda namnet på session cookien"
+ SESSION_UNIQUENESS: "Unik sträng"
+ SESSION_UNIQUENESS_HELP: "MD5 hash av Gravs rotsökväg, dvs 'GRAV_ROOT' (standard) eller en baserat på strängen slumpmässiga 'security.salt'."
+ ABSOLUTE_URLS: "Absoluta URL: er"
+ ABSOLUTE_URLS_HELP: "Absoluta eller relativa webbadresser för 'base_url'"
+ PARAMETER_SEPARATOR: "Avgränsare för parameter"
+ PARAMETER_SEPARATOR_HELP: "Avgränsare för godkända parametrar som kan ändras för Apache på Windows"
+ TASK_COMPLETED: "Aktivitet slutförd"
+ EVERYTHING_UP_TO_DATE: "Allt är uppdaterat"
+ UPDATES_ARE_AVAILABLE: "uppdatering(ar) finns tillgängliga"
+ IS_AVAILABLE_FOR_UPDATE: "är tillgänglig för uppdatering"
+ IS_NOW_AVAILABLE: "är nu tillgängliga"
+ CURRENT: "Nuvarande"
+ UPDATE_GRAV_NOW: "Uppdatera Grav nu"
+ GRAV_SYMBOLICALLY_LINKED: "Grav är symboliskt länkat. Uppgradering är inte tillgängligt"
+ UPDATING_PLEASE_WAIT: "Uppdaterar... var god vänta, hämtar"
+ OF_THIS: "av detta"
+ OF_YOUR: "av din"
+ HAVE_AN_UPDATE_AVAILABLE: "har en uppdatering tillgänglig"
+ SAVE_AS: "Spara som"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Är du säker du vill ta bort denna sida och alla dess barn? Om sidan är översatt till andra språk, kommer dessa översättningar att sparas och måste tas bort separat. Annars tas sidans mapp bort tillsammans med dess undersidor. Denna åtgärd kan inte ångras."
+ AND: "och"
+ UPDATE_AVAILABLE: "Uppdatering finns"
+ METADATA_KEY: "Nyckel (t.ex. ' nyckelord')"
+ METADATA_VALUE: "Värde (t.ex. ' blogg, Grav')"
+ USERNAME_HELP: "Användarnamn borde vara mellan 3 och 16 tecken, inklusive små bokstäver, siffror, understreck och bindestreck. Versaler, blanksteg och specialtecken är inte tillåtna"
+ FULLY_UPDATED: "Uppdaterad"
+ SAVE_LOCATION: "Sparades till"
+ PAGE_FILE: "Sidmall"
+ PAGE_FILE_HELP: "Sidmallens filnamn, och som standard display-mallen för sidan"
+ NO_USER_ACCOUNTS: "Inga användare hittades, var god skapa en användare..."
+ NO_USER_EXISTS: "Ingen lokal användare finns för det här kontot, kan inte spara..."
+ REDIRECT_TRAILING_SLASH: "Avslutande snedstreck för omdirigering"
+ REDIRECT_TRAILING_SLASH_HELP: "Utföra en 301-omdirigering i stället för transparent hantering av avslutande snedstrecks URIs."
+ DEFAULT_DATE_FORMAT: "Datumformat för sida"
+ DEFAULT_DATE_FORMAT_HELP: "Sidans datumformat som används av Grav. Som standard försöker Grav att gissa ditt datumformat, men du kan ange ett format med hjälp av PHP: s datum syntax (t.ex.: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Gissa automatiskt"
+ IGNORE_FILES: "Ignorera filer"
+ IGNORE_FILES_HELP: "Specifika filer att ignorera när sidorna bearbetas"
+ IGNORE_FOLDERS: "Ignorera mappar"
+ IGNORE_FOLDERS_HELP: "Specifika mappar att ignorera när sidorna bearbetas"
+ HIDE_EMPTY_FOLDERS: "Dölj tomma mappar"
+ HIDE_EMPTY_FOLDERS_HELP: "Om mappen inte har någon .md fil, bör det vara dolt i navigering samt unroutable"
+ HTTP_ACCEPT_LANGUAGE: "Ställ in språk från webbläsare"
+ HTTP_ACCEPT_LANGUAGE_HELP: "Du kan välja att försöka ställa in språket baserat på 'http_accept_language' sidhuvudtagg i webbläsaren"
+ OVERRIDE_LOCALE: "Skriva över locale"
+ OVERRIDE_LOCALE_HELP: "Åsidosätta inställningen locale i PHP baserat på det aktuella språket"
+ REDIRECT: "Sidan omdirigeras"
+ REDIRECT_HELP: "Ange sökväg för sidan eller extern URL för denna sidan att omdirigera till. t.ex. '/ some/route' eller 'http://somesite.com'"
+ PLUGIN_STATUS: "Status för tillägg"
+ INCLUDE_DEFAULT_LANG: "Inkludera förvalt språk"
+ INCLUDE_DEFAULT_LANG_HELP: "Detta kommer att läggas till alla webbadresser på standardspråket med standardspråk. t.ex. '/sv/blog/mitt-blogginlägg'"
+ PAGES_FALLBACK_ONLY: "Reserv för sidor"
+ PAGES_FALLBACK_ONLY_HELP: "Endast 'reserv' för att hitta innehåll via språk som söjds, standardbeteendet är att visa vilket språk som helst som hittas om aktivt språk saknas"
+ ALLOW_URL_TAXONOMY_FILTERS: "URL taxonomi-filter"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Sid-baserade samlingar gör att du kan filtrera via '/taxonomy:value '."
+ REDIRECT_DEFAULT_CODE: "Standardkod för omdirigering"
+ REDIRECT_DEFAULT_CODE_HELP: "Http-statuskod för omdirigering"
+ IGNORE_HIDDEN: "Ignorera dolda"
+ IGNORE_HIDDEN_HELP: "Ignorera alla filer och mappar som börjar med en PUNKT"
+ WRAPPED_SITE: "Wrapped/inbäddad site"
+ WRAPPED_SITE_HELP: "För teman/plugins att veta om Grav är inbäddad i en annan plattform"
+ FALLBACK_TYPES: "Tillåtna fallback typer"
+ FALLBACK_TYPES_HELP: "Tillåtna filtyper som kan hittas via sidan vägen. Som standard någon av de medityper som stöds."
+ INLINE_TYPES: "Inline fallback typer"
+ INLINE_TYPES_HELP: "En lista över filtyper som bör visas inline i stället för att laddas ner"
+ APPEND_URL_EXT: "Lägg till URL-tillägget"
+ APPEND_URL_EXT_HELP: "Lägger till en anpassad förlängning till sidans URL. Observera att Grav kommer att leta efter ' . . twig' mall"
+ PAGE_MODES: "Sidinställning"
+ PAGE_TYPES: "Sidtyper"
+ PAGE_TYPES_HELP: "Bestämmer typer av sidor som Grav stöder, ordningen bestämmer vilken typ att falla tillbaka på om begäran är tvetydig"
+ ACCESS_LEVELS: "Åtkomstnivåer"
+ GROUPS: "Grupper"
+ GROUPS_HELP: "Listan över grupper som användaren är en del av"
+ ADMIN_ACCESS: "Adminåtkomst"
+ SITE_ACCESS: "Sajtåtkomst"
+ INVALID_SECURITY_TOKEN: "Ogiltig säkerhetstoken"
+ ACTIVATE: "Aktivera"
+ TWIG_UMASK_FIX: "Umask Fix"
+ TWIG_UMASK_FIX_HELP: "Som standard skapar Twig cachelagrade filer som 0755, fix växlar detta till 0775"
+ CACHE_PERMS: "Cache behörigheter"
+ CACHE_PERMS_HELP: "Standard cachemapps rättigheter. Vanligtvis 0755 eller 0775 beroende på inställning"
+ REMOVE_SUCCESSFUL: "Borttagning lyckades"
+ REMOVE_FAILED: "Borttagning misslyckades"
+ HIDE_HOME_IN_URLS: "Dölj hemvägen i URL"
+ HIDE_HOME_IN_URLS_HELP: "Kommer att säkerställa att standardrutten för alla sidor under hem inte refererar till hemmets vanliga rutt"
+ TWIG_FIRST: "Behandla Twig först"
+ TWIG_FIRST_HELP: "Om du aktiverade Twig-sidbehandling, kan du konfigurera Twig att bearbeta före eller efter markdown"
+ SESSION_SECURE: "Säker"
+ SESSION_HTTPONLY: "Endast HTTP"
+ REVERSE_PROXY: "Omvänd proxy"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Ogiltig frontmatter, kunde inte spara"
+ ADD_FOLDER: "Lägg till mapp"
+ PROXY_URL: "Proxy-URL"
+ PROXY_URL_HELP: "Ange proxy värd eller IP och PORT"
+ NOTHING_TO_SAVE: "Inget att spara"
+ FILE_ERROR_ADD: "Ett fel inträffade när filen skulle läggas till"
+ FILE_ERROR_UPLOAD: "Ett fel inträffade när filen skulle laddas upp"
+ FILE_UNSUPPORTED: "Filtypen stöds ej"
+ ADD_ITEM: "Ny"
+ FILE_TOO_LARGE: "Filen är för stor för att laddas upp, maximal filstorlek är %s enligt dina PHP-inställningar. Öka inställningen 'post_max_size'"
+ INSTALLING: "Installerar"
+ LOADING: "Laddar.."
+ ERROR_INSTALLING_PACKAGES: "Fel vid installation av paket(en)"
+ INSTALLING_DEPENDENCIES: "Installerar beroenden..."
+ INSTALLING_PACKAGES: "Installerar paket.."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Paket installerades."
+ READY_TO_INSTALL_PACKAGES: "Redo att installera paket"
+ PACKAGES_NOT_INSTALLED: "Paket installerades inte"
+ PACKAGES_NEED_UPDATE: "Paketet finns redan installerat, ny version finns"
+ PACKAGES_SUGGESTED_UPDATE: "Paket finns redan installerat, och versionen är ok, men kommer att uppdateras"
+ REMOVE_THE: "Ta bort %s"
+ CONFIRM_REMOVAL: "Är du säker du vill ta bort denna %s?"
+ REMOVED_SUCCESSFULLY: "%s har raderats"
+ ERROR_REMOVING_THE: "Fel uppstod vid borttagning av %s"
+ READY_TO_UPDATE_PACKAGES: "Redo att uppdatera paket"
+ ERROR_UPDATING_PACKAGES: "Fel vid uppdatering av paket"
+ UPDATING_PACKAGES: "Uppdaterar paket.."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Paket har uppdaterats."
+ UPDATING: "Uppdaterar"
+ GPM_RELEASES: "GPM releaser"
+ AUTO: "Automatisk"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Stabil version"
+ TESTING: "Testar"
+ FRONTMATTER_IGNORE_FIELDS: "Ignorera frontmatter fält"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "Paketet %s har installerats utan fel"
+ DROP_FILES_HERE_TO_UPLOAD: "Släpp dina filer här eller Klicka i rutan"
+ INSERT: "Infoga"
+ UNDO: "Ångra"
+ REDO: "Upprepa"
+ HEADERS: "Headers"
+ BOLD: "Fetstil"
+ ITALIC: "Kursiv"
+ STRIKETHROUGH: "Genomstruken"
+ SUMMARY_DELIMITER: "Avgänsare för sammanfattning"
+ LINK: "Länk"
+ IMAGE: "Bild"
+ BLOCKQUOTE: "Citat"
+ UNORDERED_LIST: "Osorterad lista"
+ ORDERED_LIST: "Sorterad lista"
+ EDITOR: "Redigerare"
+ PREVIEW: "Förhandsgranska"
+ FULLSCREEN: "Helskärm"
+ MODULAR: "Modulär"
+ NON_ROUTABLE: "Icke tillgänglig"
+ NON_MODULAR: "Icke modulär"
+ NON_VISIBLE: "Icke synlig"
+ NON_PUBLISHED: "Icke-publicerad"
+ CHARACTERS: "tecken"
+ PUBLISHING: "Publicering"
+ NOTIFICATIONS: "Notiser"
+ MEDIA_TYPES: "Mediatyper"
+ IMAGE_OPTIONS: "Bildalternativ"
+ MIME_TYPE: "MIME-typ"
+ THUMB: "Miniatyr"
+ TYPE: "Typ"
+ FILE_EXTENSION: "Filändelse"
+ LEGEND: "Sidförklaring"
+ MEMCACHE_SERVER: "Memcache server"
+ MEMCACHE_SERVER_HELP: "Memcache server-adress"
+ MEMCACHE_PORT: "Memcache port"
+ MEMCACHE_PORT_HELP: "Memcache server port"
+ MEMCACHED_SERVER: "Memcache server"
+ MEMCACHED_SERVER_HELP: "Memcache server-adress"
+ MEMCACHED_PORT: "Memcache port"
+ MEMCACHED_PORT_HELP: "Memcache server port"
+ REDIS_SERVER: "Redis server"
+ REDIS_SERVER_HELP: "Redis server-adress"
+ REDIS_PORT: "Redis port"
+ REDIS_PORT_HELP: "Redis serverport"
+ ALL: "Alla"
+ FROM: "från"
+ TO: "till"
+ RELEASE_DATE: "Releasedatum"
+ SORT_BY: "Sortera efter"
+ RESOURCE_FILTER: "Filtrera..."
+ FORCE_SSL: "Tvinga SSL"
+ NEWS_FEED: "Nyhetsflöde"
+ EXTERNAL_URL: "Extern URL"
+ SESSION_PATH: "Sessionens sökväg"
+ CUSTOM_BASE_URL: "Anpassad bas-URL"
+ FILEUPLOAD_PREVENT_SELF: 'Kan inte använda "%s" utanför sidor.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Det går inte att ladda upp filen %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: 'Det går inte att flytta filen %s till "%s"'
+ DROPZONE_CANCEL_UPLOAD: 'Ångra uppladdning'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Är du säker på att du vill avbryta den här uppladdningen?'
+ DROPZONE_DEFAULT_MESSAGE: 'Släpp dina filer här eller Klicka i rutan'
+ DROPZONE_FALLBACK_MESSAGE: 'Din webbläsare inte stöder dra och släpp filöverföringar.'
+ DROPZONE_INVALID_FILE_TYPE: "Du kan inte ladda upp filer av den här typen."
+ DROPZONE_MAX_FILES_EXCEEDED: "Du kan inte ladda upp fler filer."
+ DROPZONE_REMOVE_FILE: "Radera fil"
+ DROPZONE_RESPONSE_ERROR: "Servern svarade med {{statusCode}} kod."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Aktivera cachelagring av Admin"
+ ADMIN_CACHING_HELP: "Cachelagring i admin kan styras självständigt från front-end"
+ DESTINATION_NOT_SPECIFIED: "Destination inte angiven"
+ UPLOAD_ERR_NO_TMP_DIR: "Saknar en temporär katalog"
+ SESSION_SPLIT: "Session Split"
+ ERROR_SYSTEM: "Systemfel"
+ IMAGES_AUTO_FIX_ORIENTATION: "Åtgärda orientering automatiskt"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Automatiskt korrigera bildens läge baserat på Exif-data"
+ REDIS_SOCKET: "Redis socket"
+ REDIS_SOCKET_HELP: "Redis socket"
+ NOT_SET: "Har inte angetts"
+ PERMISSIONS: "Behörigheter"
+ NEVER_CACHE_TWIG: "Inaktivera cache för twig"
+ ALLOW_WEBSERVER_GZIP: "Tillåt WebServer Gzip"
+ OFFLINE_WARNING: "Anslutningen till GPM inte kan fastställas"
+ CLI_COMPATIBILITY: "CLI kompatibilitet"
diff --git a/user/plugins/admin/languages/th.yaml b/user/plugins/admin/languages/th.yaml
new file mode 100644
index 0000000..68f3a82
--- /dev/null
+++ b/user/plugins/admin/languages/th.yaml
@@ -0,0 +1,690 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "นี่เป็นรุ่นทดลอง หากคุณใช้บนเว็บจริงคุณต้องยอมรับในความเสี่ยงนั้นเอง"
+ ADMIN_REPORT_ISSUE: "พบปัญหา กรุณารายงานบน GitHub"
+ EMAIL_FOOTER: "ขับเคลื่อนด้วย Grav - The Modern Flat File CMS"
+ LOGIN_BTN: "เข้าสู่ระบบ"
+ LOGIN_BTN_FORGOT: "ลืมรหัสผ่าน"
+ LOGIN_BTN_RESET: "กำหนดรหัสผ่านใหม่"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "ส่งคำแนะนำการตั้งค่าใหม่"
+ LOGIN_BTN_CLEAR: "ล้างฟอร์ม"
+ LOGIN_BTN_CREATE_USER: "สร้างผู้ใช้"
+ LOGIN_LOGGED_IN: "คุณได้ล็อคอินเรียบร้อยแล้ว"
+ LOGIN_FAILED: "ไม่สามารถเข้าสู่ระบบได้"
+ LOGGED_OUT: "คุณได้ออกจากระบบแล้ว"
+ RESET_NEW_PASSWORD: "กรุณาใส่รหัสผ่านใหม่ …"
+ RESET_LINK_EXPIRED: "ลิงก์หมดอายุ โปรดลองอีกครั้ง"
+ RESET_PASSWORD_RESET: "ตั้งค่ารหัสผ่านแล้ว"
+ RESET_INVALID_LINK: "ตั้งค่าการเชื่อมโยงที่ใช้ไม่ถูกต้อง โปรดลองอีกครั้ง"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "คำแนะนำการตั้งค่ารหัสผ่านของคุณได้ถูกส่งผ่านทางอีเมล์ %s"
+ FORGOT_FAILED_TO_EMAIL: "ไม่สามารถส่งอีเมล์แนะนำ กรุณาลองใหม่อีกครั้ง"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "ไม่สามารถรีเซ็ตรหัสผ่านสำหรับ %s ไม่มีที่อยู่อีเมลที่ถูกกำหนด"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "ไม่พบชื่อผู้ใช้ %s"
+ FORGOT_EMAIL_NOT_CONFIGURED: "ไม่สามารถรีเซ็ตรหัสผ่าน เว็บไซต์นี้ไม่ได้กำหนดค่าให้ส่งอีเมล์"
+ FORGOT_EMAIL_SUBJECT: "ขอรีเซ็ตรหัสผ่าน %s"
+ FORGOT_EMAIL_BODY: "
Alternatif olarak, şu url'yi tarayıcınızın adres çubuğuna kopyalayabilirsiniz:
%2$s
Saygılarımızla,
%3$s
"
+ MANAGE_PAGES: "Sayfaları Yönet"
+ CONFIGURATION: "Yapılandırma"
+ PAGES: "Sayfalar"
+ PLUGINS: "Eklentiler"
+ PLUGIN: "Eklenti"
+ THEMES: "Temalar"
+ LOGOUT: "Çıkış"
+ BACK: "Geri"
+ NEXT: "Sonraki"
+ PREVIOUS: "Önceki"
+ ADD_PAGE: "Sayfa Ekle"
+ ADD_MODULAR: "Mödül Ekle"
+ MOVE: "Taşı"
+ DELETE: "Sil"
+ VIEW: "Görünüm"
+ SAVE: "Kaydet"
+ NORMAL: "Normal"
+ EXPERT: "Uzman"
+ EXPAND_ALL: "Tümünü Genişlet"
+ COLLAPSE_ALL: "Tümünü Daralt"
+ ERROR: "Hata"
+ CLOSE: "Kapat"
+ CANCEL: "İptal"
+ CONTINUE: "Devam"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_TITLE: "Doğrulama Gerekli"
+ MODAL_CHANGED_DETECTED_TITLE: "Değişiklikler Tespit Edildi"
+ MODAL_CHANGED_DETECTED_DESC: "Kaydedilmemiş değişiklikler var. Kaydetmeden çıkmak istediğinizden emin misiniz?"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_TITLE: "Doğrulama Gerekli"
+ MODAL_DELETE_FILE_CONFIRMATION_REQUIRED_DESC: "Bu dosyayı silmek istiyor musunuz? Bu işlem geri alınamaz."
+ ADD_FILTERS: "Filtre Ekle"
+ SEARCH_PAGES: "Sayfaları Ara"
+ VERSION: "Sürüm"
+ WAS_MADE_WITH: "Yapan :"
+ BY: "tarafından"
+ UPDATE_THEME: "Temayı Güncelle"
+ UPDATE_PLUGIN: "Eklentiyi Güncelle"
+ OF_THIS_THEME_IS_NOW_AVAILABLE: "bu tema artık kullanılabilir"
+ OF_THIS_PLUGIN_IS_NOW_AVAILABLE: "bu eklenti artık kullanılabilir"
+ AUTHOR: "Yazar"
+ HOMEPAGE: "Anasayfa"
+ DEMO: "Demo"
+ BUG_TRACKER: "Hata Takipçisi"
+ KEYWORDS: "Anahtar Kelimeler"
+ LICENSE: "Lisans"
+ DESCRIPTION: "Açıklama"
+ README: "Benioku"
+ REMOVE_THEME: "Temayı Kaldır"
+ INSTALL_THEME: "Tema Yükle"
+ THEME: "Tema"
+ BACK_TO_THEMES: "Temalara geri dön"
+ BACK_TO_PLUGINS: "Eklentilere geri dön"
+ CHECK_FOR_UPDATES: "Güncelleştirmeleri Denetle"
+ ADD: "Ekle"
+ CLEAR_CACHE: "Önbelleği Temizle"
+ CLEAR_CACHE_ALL_CACHE: "Tüm Önbellek"
+ CLEAR_CACHE_ASSETS_ONLY: "Yalnızca Malzemeler"
+ CLEAR_CACHE_IMAGES_ONLY: "Yalnızca Resimler"
+ CLEAR_CACHE_CACHE_ONLY: "Yalnızca Önbellek"
+ CLEAR_CACHE_TMP_ONLY: "Sadece geçici dosyalar"
+ DASHBOARD: "Yönetim Paneli"
+ UPDATES_AVAILABLE: "Güncelleştirmeler Var"
+ DAYS: "Gün"
+ UPDATE: "Güncelle"
+ BACKUP: "Yedekle"
+ BACKUPS: "Yedeklemeler"
+ BACKUP_NOW: "Şimdi Yedekle"
+ BACKUPS_STATS: "Yedekleme İstatistikleri"
+ BACKUPS_HISTORY: "Yedekleme Geçmişi"
+ BACKUPS_PROFILES: "Yedekleme Profilleri"
+ BACKUPS_COUNT: "Yedekleme sayısı"
+ BACKUPS_PROFILES_COUNT: "Profil sayısı"
+ BACKUPS_TOTAL_SIZE: "Kullanılan alan"
+ BACKUPS_NEWEST: "En yeni yedekleme"
+ BACKUPS_OLDEST: "En eski yedekleme"
+ BACKUPS_PURGE: "Temizle"
+ STATISTICS: "İstatistikler"
+ TODAY: "Bugün"
+ WEEK: "Hafta"
+ MONTH: "Ay"
+ LATEST_PAGE_UPDATES: "Son Sayfa Güncellemeleri"
+ MAINTENANCE: "Bakım"
+ UPDATED: "Güncelleştirildi"
+ MON: "Pzt"
+ TUE: "Sal"
+ WED: "Çrş"
+ THU: "Prş"
+ FRI: "Cum"
+ SAT: "Cmt"
+ SUN: "Pzr"
+ COPY: "Kopyala"
+ EDIT: "Düzenle"
+ CREATE: "Oluştur"
+ GRAV_ADMIN: "Grav Yönetim Paneli"
+ GRAV_OFFICIAL_PLUGIN: "Resmi Grav Eklentisi"
+ GRAV_OFFICIAL_THEME: "Resmi Grav Teması"
+ PLUGIN_SYMBOLICALLY_LINKED: "Bu eklenti sembolik olarak bağlıdır. Güncelleştirmeler fark edilmeyecektir."
+ THEME_SYMBOLICALLY_LINKED: "Bu tema sembolik olarak bağlıdır. Güncelleştirmeler fark edilmeyecektir"
+ REMOVE_PLUGIN: "Eklentiyi Kaldır"
+ INSTALL_PLUGIN: "Eklenti Yükle"
+ AVAILABLE: "Mevcut"
+ INSTALLED: "Yüklü"
+ INSTALL: "Yükle"
+ ACTIVE_THEME: "Aktif Tema"
+ SWITCHING_TO: "Şuna değiştir"
+ SWITCHING_TO_DESCRIPTION: "Farklı bir temaya geçerek, tüm düzen sayfalarını, potansiyel olarak değişebileceğinin onayını vermiş olursunuz."
+ SWITCHING_TO_CONFIRMATION: "Temayı değiştirmek istiyor musunuz"
+ CREATE_NEW_USER: "Yeni Kullanıcı Oluştur"
+ REMOVE_USER: "Kullanıcıyı Sil"
+ ACCESS_DENIED: "Erişim reddedildi"
+ ACCOUNT_NOT_ADMIN: "hesabınız yönetici yetkilerine sahip değil"
+ PHP_INFO: "PHP Bilgisi"
+ INSTALLER: "Yükleyici"
+ AVAILABLE_THEMES: "Mevcut Temalar"
+ AVAILABLE_PLUGINS: "Mevcut Eklentiler"
+ INSTALLED_THEMES: "Yüklü Temalar"
+ INSTALLED_PLUGINS: "Yüklü Eklentiler"
+ BROWSE_ERROR_LOGS: "Hata Kayıtlarına Gözat"
+ SITE: "Web sitesi"
+ INFO: "Bilgi"
+ SYSTEM: "Sistem"
+ USER: "Kullanıcı"
+ ADD_ACCOUNT: "Hesap Ekle"
+ SWITCH_LANGUAGE: "Dili Değiştir"
+ SUCCESSFULLY_ENABLED_PLUGIN: "Eklenti başarıyla etkinleştirildi"
+ SUCCESSFULLY_DISABLED_PLUGIN: "Eklenti devre dışı bırakıldı"
+ SUCCESSFULLY_CHANGED_THEME: "Varsayılan tema başarıyla değiştirildi"
+ INSTALLATION_FAILED: "Kurulum Başarısız"
+ INSTALLATION_SUCCESSFUL: "Kurulum Başarılı"
+ UNINSTALL_FAILED: "Kaldırma Başarısız"
+ UNINSTALL_SUCCESSFUL: "Kaldırma Başarılı"
+ SUCCESSFULLY_SAVED: "Başarıyla kaydedildi"
+ SUCCESSFULLY_COPIED: "Başarıyla kopyalandı"
+ REORDERING_WAS_SUCCESSFUL: "Sıralama başarılı"
+ SUCCESSFULLY_DELETED: "Başarıyla silindi"
+ SUCCESSFULLY_SWITCHED_LANGUAGE: "Dil başarıyla değiştirildi"
+ INSUFFICIENT_PERMISSIONS_FOR_TASK: "Bu görev için izniniz yok"
+ CACHE_CLEARED: "Önbellek temizlendi"
+ METHOD: "Yöntem"
+ ERROR_CLEARING_CACHE: "Önbellek temizleme hatası"
+ AN_ERROR_OCCURRED: "Bir hata meydana geldi"
+ YOUR_BACKUP_IS_READY_FOR_DOWNLOAD: "Yedeğiniz indirilmeye hazır"
+ DOWNLOAD_BACKUP: "Yedeği indir"
+ PAGES_FILTERED: "Filtrelenen Sayfalar"
+ NO_PAGE_FOUND: "Sayfa bulunamadı"
+ INVALID_PARAMETERS: "Hatalı Parametreler"
+ NO_FILES_SENT: "Dosya gönderilmedi"
+ EXCEEDED_FILESIZE_LIMIT: "PHP dosya boyutu sınırı aşıldı"
+ UNKNOWN_ERRORS: "Bilinmeyen hatalar"
+ EXCEEDED_GRAV_FILESIZE_LIMIT: "Grav yapılandırma dosyasındaki boyut sınırı aşıldı"
+ UNSUPPORTED_FILE_TYPE: "Desteklenmeyen dosya formatı"
+ FAILED_TO_MOVE_UPLOADED_FILE: "Yüklenilen dosya taşınamadı."
+ FILE_UPLOADED_SUCCESSFULLY: "Dosya başarıyla yüklendi"
+ FILE_DELETED: "Dosya silindi"
+ FILE_COULD_NOT_BE_DELETED: "Dosya silinemedi"
+ FILE_NOT_FOUND: "Dosya bulunamadı"
+ NO_FILE_FOUND: "Hiçbir dosya bulunamadı"
+ GRAV_WAS_SUCCESSFULLY_UPDATED_TO: "Grav başarıyla güncellendi, sürüm"
+ GRAV_UPDATE_FAILED: "Grav güncellemesi başarısız"
+ EVERYTHING_UPDATED: "Herşey güncellendi"
+ UPDATES_FAILED: "Güncellemeler başarısız"
+ AVATAR_BY: "Avatar sahibi :"
+ AVATAR_UPLOAD_OWN: "Ya da kendiniz bir dosya yükleyin..."
+ LAST_BACKUP: "Son Yedek"
+ FULL_NAME: "Tam isim"
+ USERNAME: "Kullanıcı Adı"
+ EMAIL: "Eposta Adresi"
+ USERNAME_EMAIL: "Kullanıcı Adı veya E-Posta"
+ PASSWORD: "Şifre"
+ PASSWORD_CONFIRM: "Parolayı yeniden girin"
+ TITLE: "Başlık"
+ LANGUAGE: "Dil"
+ ACCOUNT: "Hesap"
+ EMAIL_VALIDATION_MESSAGE: "Geçerli bir eposta adresi belirtilmeli"
+ PASSWORD_VALIDATION_MESSAGE: "Parola en az bir sayı, bir büyük harf, bir küçük harf ve en az 8 veya daha fazla karakterden oluşmalıdır"
+ LANGUAGE_HELP: "Favori dili belirleyin"
+ MEDIA: "Ortam"
+ DEFAULTS: "Varsayılanlar"
+ SITE_TITLE: "Site Başlığı"
+ SITE_TITLE_PLACEHOLDER: "Başlığı bütün sayfalara uygula"
+ SITE_TITLE_HELP: "Sitenizin varsayılan başlığı, çoğunlukla temalarda kullanılır"
+ SITE_DEFAULT_LANG: "Varsayılan Dil"
+ SITE_DEFAULT_LANG_PLACEHOLDER: "Temanın etiketinde kullanılacak varsayılan dil"
+ SITE_DEFAULT_LANG_HELP: "Temanın etiketinde kullanılacak varsayılan dil"
+ DEFAULT_AUTHOR: "Varsayılan Yazar"
+ DEFAULT_AUTHOR_HELP: "Varsayılan yazar adı, genellikle temalarda ya da sayfa içeriklerinde kullanılır"
+ DEFAULT_EMAIL: "Varsayılan Eposta"
+ DEFAULT_EMAIL_HELP: "Temalar ya da sayfalar için referans olacak varsayılan email adresi"
+ TAXONOMY_TYPES: "Taksonomi Tipleri"
+ TAXONOMY_TYPES_HELP: "Taksonomi türlerini sayfalarda kullanmak istiyorsanız, burada tanımlanmış olması gerekmektedir"
+ PAGE_SUMMARY: "Sayfa Özeti"
+ ENABLED: "Etkin"
+ ENABLED_HELP: "Sayfa özetini etkinleştir (sayfa özeti, sayfa içeriği ile aynı değeri döndürür)"
+ 'YES': "Evet"
+ 'NO': "Hayır"
+ SUMMARY_SIZE: "Özet Boyutu"
+ SUMMARY_SIZE_HELP: "İçerik özeti olarak kullanılmak üzere bir sayfadaki karakterlerin toplam sayısı"
+ FORMAT: "Biçim"
+ FORMAT_HELP: "short = use the first occurrence of delimiter or size; long = summary delimiter will be ignored"
+ SHORT: "Kısa"
+ LONG: "Uzun"
+ DELIMITER: "Ayraç"
+ DELIMITER_HELP: "Özet ayracı (varsayılan '===')"
+ METADATA: "Meta verisi"
+ METADATA_HELP: "Sayfa tarafından geçersiz kılınmadığı sürece her sayfada görüntülenen varsayılan meta veri değerleri"
+ NAME: "Ad(name)"
+ CONTENT: "İçerik"
+ REDIRECTS_AND_ROUTES: "Yönlendirmeler & Yollar"
+ CUSTOM_REDIRECTS: "Özel Yönlendirmeler"
+ CUSTOM_REDIRECTS_HELP: "routes to redirect to other pages. Standard Regex replacement is valid"
+ CUSTOM_REDIRECTS_PLACEHOLDER_KEY: "/takma/adin"
+ CUSTOM_REDIRECTS_PLACEHOLDER_VALUE: "/yonlendirme/adresin"
+ CUSTOM_ROUTES: "Özel Yollar"
+ CUSTOM_ROUTES_HELP: "routes to alias to other pages. Standard Regex replacement is valid"
+ CUSTOM_ROUTES_PLACEHOLDER_KEY: "/takma/ad"
+ CUSTOM_ROUTES_PLACEHOLDER_VALUE: "/ozel/yol"
+ FILE_STREAMS: "Dosya Akışları"
+ DEFAULT: "Varsayılan"
+ PAGE_MEDIA: "Sayfa İçeriği"
+ OPTIONS: "Ayarlar"
+ PUBLISHED: "Yayınlandı"
+ PUBLISHED_HELP: "By default, a page is published unless you explicitly set published: false or via a publish_date being in the future, or unpublish_date in the past"
+ DATE: "Tarih"
+ DATE_HELP: "The date variable allows you to specifically set a date associated with this page."
+ PUBLISHED_DATE: "Yayınlanma Tarihi"
+ PUBLISHED_DATE_HELP: "Can provide a date to automatically trigger publication."
+ UNPUBLISHED_DATE: "Yayından Kaldırma Tarihi"
+ UNPUBLISHED_DATE_HELP: "Can provide a date to automatically trigger un-publication."
+ ROBOTS: "Robot"
+ TAXONOMIES: "Bölümlendirmeler(taxonomy)"
+ TAXONOMY: "Taksonomi"
+ ADVANCED: "Gelişmiş"
+ SETTINGS: "Ayarlar"
+ FOLDER_NUMERIC_PREFIX: "Nümerik Klasör Öneki"
+ FOLDER_NUMERIC_PREFIX_HELP: "Numeric prefix that provides manual ordering and implies visibility"
+ FOLDER_NAME: "Klasör Adı"
+ FOLDER_NAME_HELP: "Bu sayfa için dosya sisteminde saklanacak klasörün adı"
+ PARENT: "Ebeveyn"
+ DEFAULT_OPTION_ROOT: "- Kök -"
+ DEFAULT_OPTION_SELECT: "- Seçiniz -"
+ DISPLAY_TEMPLATE: "Şablonu Görüntüle"
+ DISPLAY_TEMPLATE_HELP: "The page type that translates into which twig template renders the page"
+ BODY_CLASSES: "Body Sınıfları"
+ ORDERING: "Sıralama"
+ PAGE_ORDER: "Sayfa Sıralaması"
+ OVERRIDES: "Özelleştirmeler"
+ MENU: "Menü"
+ MENU_HELP: "The string to be used in a menu. If not set, Title will be used."
+ SLUG: "Kısa Url"
+ SLUG_HELP: "The slug variable allows you to specifically set the page's portion of the URL"
+ SLUG_VALIDATE_MESSAGE: "A slug must contain only lowercase alphanumeric characters and dashes"
+ PROCESS: "İşle"
+ PROCESS_HELP: "Control how pages are processed. Can be set per-page rather than globally"
+ DEFAULT_CHILD_TYPE: "Default Child Type"
+ USE_GLOBAL: "Genel Değeri Kullan"
+ ROUTABLE: "Yönlendirilebilir"
+ ROUTABLE_HELP: "Bu sayfa bir URL tarafından erişilebilir olursa"
+ CACHING: "Önbellekleme"
+ VISIBLE: "Görünür"
+ VISIBLE_HELP: "Bir sayfanın navigasyonda görünüp görünmeyeceğini belirler."
+ DISABLED: "Devre Dışı"
+ ITEMS: "Ögeler"
+ ORDER_BY: "Sıralama Ölçütü"
+ ORDER: "Sırala"
+ FOLDER: "Klasör"
+ ASCENDING: "Artan"
+ DESCENDING: "Azalan"
+ ADD_MODULAR_CONTENT: "Modüler İçerik Ekle"
+ PAGE_TITLE: "Sayfa Başlığı"
+ PAGE_TITLE_HELP: "Sayfanın başlığı"
+ PAGE: "Sayfa"
+ MODULAR_TEMPLATE: "Modüler Şablon"
+ FRONTMATTER: "Frontmatter"
+ FILENAME: "Dosyaadı"
+ PARENT_PAGE: "Ebeveyn Sayfa"
+ HOME_PAGE: "Ana Sayfa"
+ HOME_PAGE_HELP: "Grav'in varsayılan açılış sayfası olarak kullanacağı sayfa"
+ DEFAULT_THEME: "Varsayılan Tema"
+ DEFAULT_THEME_HELP: "Grav'in kullanacağı varsayılan şablonu ayarlayın (varsayılan Antimadde)"
+ TIMEZONE: "Zaman Dilimi"
+ TIMEZONE_HELP: "Sunucunun varsayılan saat dilimini geçersiz kıl"
+ SHORT_DATE_FORMAT: "Kısa Tarih Görünümü"
+ SHORT_DATE_FORMAT_HELP: "Temalar tarafında kullanılabilecek kısa tarih formatını ayarlayın"
+ LONG_DATE_FORMAT: "Uzun Tarih Görünümü"
+ LONG_DATE_FORMAT_HELP: "Temalar tarafında kullanılabilecek uzun tarih formatını ayarlayın"
+ DEFAULT_ORDERING: "Varsayılan sıralama"
+ DEFAULT_ORDERING_HELP: "Listede yer alan sayfalar geçersiz kılınmadıkça, bu sıralamaya göre oluşturulacaktır"
+ DEFAULT_ORDERING_DEFAULT: "Varsayılan - klasör adına göre"
+ DEFAULT_ORDERING_FOLDER: "Klasör - klasör önekine göre"
+ DEFAULT_ORDERING_TITLE: "Başlık - başlık alanına göre"
+ DEFAULT_ORDERING_DATE: "Tarih - tarihe göre"
+ DEFAULT_ORDER_DIRECTION: "Varsayılan sıralama yönü"
+ DEFAULT_ORDER_DIRECTION_HELP: "The direction of pages in a list"
+ DEFAULT_PAGE_COUNT: "Varsayılan sayfa sayısı"
+ DEFAULT_PAGE_COUNT_HELP: "Varsayılan maksimum sayfa listeleme sayısı"
+ DATE_BASED_PUBLISHING: "Tarih-bazlı yayınlama"
+ DATE_BASED_PUBLISHING_HELP: "Automatically (un)publish posts based on their date"
+ EVENTS: "Etkinlikler"
+ EVENTS_HELP: "Belirli olayları etkinleştirin ya da devredışı bırakın. Bu işlemler, bazı eklentilerin çalışmasını engelleyebilir"
+ REDIRECT_DEFAULT_ROUTE: "Varsayılan yola yönlendir"
+ REDIRECT_DEFAULT_ROUTE_HELP: "Automatically redirect to a page's default route"
+ LANGUAGES: "Diller"
+ SUPPORTED: "Desteklenen"
+ SUPPORTED_HELP: "Comma separated list of 2 letter language codes (for example 'en,fr,de')"
+ TRANSLATIONS_ENABLED: "Çeviriler etkin"
+ TRANSLATIONS_ENABLED_HELP: "Grav, eklenti ve uzantılarında çevirileri destekleyin"
+ TRANSLATIONS_FALLBACK: "Translations fallback"
+ TRANSLATIONS_FALLBACK_HELP: "Fallback through supported translations if active language doesn't exist"
+ ACTIVE_LANGUAGE_IN_SESSION: "Oturumdaki aktif dil"
+ ACTIVE_LANGUAGE_IN_SESSION_HELP: "Etkin dili bu oturumda sakla"
+ HTTP_HEADERS: "HTTP Başlıkları"
+ EXPIRES: "Sona erme"
+ EXPIRES_HELP: "Sets the expires header. The value is in seconds."
+ CACHE_CONTROL: "HTTP Cache-Control"
+ CACHE_CONTROL_HELP: "Set to a valid cache-control value such as `no-cache, no-store, must-revalidate`"
+ LAST_MODIFIED: "Son değiştirilme"
+ LAST_MODIFIED_HELP: "Sets the last modified header that can help optimize proxy and browser caching"
+ ETAG: "ETag"
+ ETAG_HELP: "Sets the etag header to help identify when a page has been modified"
+ VARY_ACCEPT_ENCODING: "Vary accept encoding"
+ VARY_ACCEPT_ENCODING_HELP: "Sets the `Vary: Accept Encoding` header to help with proxy and CDN caching"
+ MARKDOWN_EXTRA: "Ekstra Tanım"
+ MARKDOWN_EXTRA_HELP: "Enable default support for Markdown Extra - https://michelf.ca/projects/php-markdown/extra/"
+ AUTO_LINE_BREAKS: "Otomatik satır sonları"
+ AUTO_LINE_BREAKS_HELP: "Markdown'da otomatik satır sonlarını aktif et"
+ AUTO_URL_LINKS: "Otomatik URL bağlantıları"
+ AUTO_URL_LINKS_HELP: "URL'leri otomatik olarak HTML linklerine çevirmeyi aktif et"
+ ESCAPE_MARKUP: "Biçimlendirmeyi süz(ESCAPE_MARKUP)"
+ ESCAPE_MARKUP_HELP: "Escape markup tags into HTML entities"
+ CACHING_HELP: "Global ON/OFF switch to enable/disable Grav caching"
+ CACHE_CHECK_METHOD: "Cache kontrol methodu"
+ CACHE_CHECK_METHOD_HELP: "Select the method that Grav uses to check if page files have been modified."
+ CACHE_DRIVER: "Önbellek sürücüsü"
+ CACHE_DRIVER_HELP: "Önbellek sürücüsü seçin. Otomatik Algıla'yı seçmeniz durumunda Grav sizin için en iyisini bulacaktır"
+ CACHE_PREFIX: "Önbellek öneki"
+ CACHE_PREFIX_HELP: "An identifier for part of the Grav key. Don't change unless you know what your doing."
+ CACHE_PREFIX_PLACEHOLDER: "Derived from base URL (override by entering random string)"
+ LIFETIME: "Yaşam süresi"
+ LIFETIME_HELP: "Sets the cache lifetime in seconds. 0 = infinite"
+ GZIP_COMPRESSION: "Gzip sıkıştırması"
+ GZIP_COMPRESSION_HELP: "Grav sayfalarında arttırılmış performans için GZip sıkıştırmasını aktif et."
+ TWIG_TEMPLATING: "Twig Şablonu"
+ TWIG_CACHING: "Twig önbellekleme"
+ TWIG_CACHING_HELP: "Twig önbellekleme mekanizmasını kontrol edin. En iyi performans için bunu etkinleştirin."
+ TWIG_DEBUG: "Twig hata ayıklama"
+ TWIG_DEBUG_HELP: "Twig Debugger uzantısını yüklememe seçeneğine izin verir"
+ DETECT_CHANGES: "Değişiklikleri tespit et"
+ DETECT_CHANGES_HELP: "Twig şablonlarında bir değişiklik algılandığında otomatik olarak yeniden derlenecektir"
+ AUTOESCAPE_VARIABLES: "Autoescape variables"
+ AUTOESCAPE_VARIABLES_HELP: "Autoescapes all variables. This will break your site most likely"
+ ASSETS: "Statik dosyalar"
+ CSS_PIPELINE: "CSS pipeline"
+ CSS_PIPELINE_HELP: "The CSS pipeline is the unification of multiple CSS resources into one file"
+ CSS_PIPELINE_INCLUDE_EXTERNALS: "Include externals in CSS pipeline"
+ CSS_PIPELINE_INCLUDE_EXTERNALS_HELP: "External URLs sometimes have relative file references and shouldn't be pipelined"
+ CSS_PIPELINE_BEFORE_EXCLUDES: "CSS pipeline render first"
+ CSS_PIPELINE_BEFORE_EXCLUDES_HELP: "Render the CSS pipeline before any other CSS references that are not included"
+ CSS_MINIFY: "CSS küçültme"
+ CSS_MINIFY_HELP: "Minify the CSS during pipelining"
+ CSS_MINIFY_WINDOWS_OVERRIDE: "CSS minify işlemini Windows platformlarında geçersiz kıl"
+ CSS_MINIFY_WINDOWS_OVERRIDE_HELP: "Windows platformları için minify işlemini geçersiz kıl. Bu özellik ThreadStackSize nedeniyle hatalı çalışıyor"
+ CSS_REWRITE: "CSS'i yeniden yaz"
+ CSS_REWRITE_HELP: "Rewrite any CSS relative URLs during pipelining"
+ JAVASCRIPT_PIPELINE: "JavaScript Yolu"
+ JAVASCRIPT_PIPELINE_HELP: "The JS pipeline is the unification of multiple JS resources into one file"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS: "Include externals in JS pipeline"
+ JAVASCRIPT_PIPELINE_INCLUDE_EXTERNALS_HELP: "External URLs sometimes have relative file references and shouldn't be pipelined"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES: "JS pipeline render first"
+ JAVASCRIPT_PIPELINE_BEFORE_EXCLUDES_HELP: "Render the JS pipeline before any other JS references that are not included"
+ JAVASCRIPT_MINIFY: "JavaScript küçültme"
+ JAVASCRIPT_MINIFY_HELP: "Minify the JS during pipelining"
+ ENABLED_TIMESTAMPS_ON_ASSETS: "Statis dosyalarda timestampleri etkinleştir"
+ ENABLED_TIMESTAMPS_ON_ASSETS_HELP: "Statik dosyalar için timestamp'i aktif et"
+ COLLECTIONS: "Koleksiyonlar"
+ ERROR_HANDLER: "Hata yakalayıcı"
+ DISPLAY_ERRORS: "Hataları göster"
+ DISPLAY_ERRORS_HELP: "Hataları tam sayfa olarak görüntüle"
+ LOG_ERRORS: "Hataları kaydet"
+ LOG_ERRORS_HELP: "Hata günlüklerini /logs klasörüne kaydet"
+ DEBUGGER: "Hata Ayıklayıcı"
+ DEBUGGER_HELP: "Grav hata ayıklayıcısını aktif et ve aşağıdaki ayarları yap"
+ DEBUG_TWIG: "Hata Ayıkla - Twig"
+ DEBUG_TWIG_HELP: "Twig şablonlarında hata ayıklamayı aktif et"
+ SHUTDOWN_CLOSE_CONNECTION: "Shutdown close connection"
+ SHUTDOWN_CLOSE_CONNECTION_HELP: "OnShutdown() fonksiyonunu çağırmadan önce bağlantıyı kapatın. Hata ayıklama yanlış çalışabilir"
+ DEFAULT_IMAGE_QUALITY: "Varsayılan görüntü kalitesi"
+ DEFAULT_IMAGE_QUALITY_HELP: "Görselleri yeniden oluştururken ya da önbelleğe alırken kullanılacak varsayılan kalite (85%)"
+ CACHE_ALL: "Tüm görüntülere önbelleğe al"
+ CACHE_ALL_HELP: "Medya dosyalarına müdahale edilmemiş olsa bile tüm görselleri Grav'in önbellek sistemi yardımıyla çalıştır"
+ IMAGES_DEBUG: "Görüntü hata ayıklama filigranı"
+ IMAGES_DEBUG_HELP: "Show an overlay over images indicating the pixel depth of the image when working with retina for example"
+ UPLOAD_LIMIT: "Dosya yükleme limiti"
+ UPLOAD_LIMIT_HELP: "Maksimum dosya yükleme boyutunu girin (bayt)(0 değeri limitsiz olarak kabul edilir)"
+ ENABLE_MEDIA_TIMESTAMP: "Medya dosyalarında timestamp özelliğini etkinleştir"
+ ENABLE_MEDIA_TIMESTAMP_HELP: "Appends a timestamp based on last modified date to each media item"
+ SESSION: "Oturum"
+ SESSION_ENABLED_HELP: "Grav içerisinde oturum desteğini etkinleştir"
+ TIMEOUT: "Zamanaşımı"
+ TIMEOUT_HELP: "Oturum zaman aşımını saniye olarak ayarlar"
+ SESSION_NAME_HELP: "An identifier used to form the name of the session cookie"
+ ABSOLUTE_URLS: "Mutlaka URL'ler"
+ ABSOLUTE_URLS_HELP: "`base_url` için mutlak ya da ilgili URL'ler"
+ PARAMETER_SEPARATOR: "Parameter separator"
+ PARAMETER_SEPARATOR_HELP: "Separator for passed parameters that can be changed for Apache on Windows"
+ TASK_COMPLETED: "Görev tamamlandı"
+ EVERYTHING_UP_TO_DATE: "Herşey günceş"
+ UPDATES_ARE_AVAILABLE: "güncelleştirme(ler) mevcut"
+ IS_AVAILABLE_FOR_UPDATE: "güncelleme için uygun"
+ IS_NOW_AVAILABLE: "kullanılabilir"
+ CURRENT: "Güncel"
+ UPDATE_GRAV_NOW: "Grav'ı şimdi güncelle"
+ GRAV_SYMBOLICALLY_LINKED: "Grav sembolik olarak bağlandı. Yükseltmeler kullanılamayacaktır"
+ UPDATING_PLEASE_WAIT: "Güncelleniyor... Lütfen indirilirken bekleyin"
+ OF_THIS: "of this"
+ OF_YOUR: "of your"
+ HAVE_AN_UPDATE_AVAILABLE: "kullanılabilir bir güncelleme var"
+ SAVE_AS: "Farklı kaydet"
+ MODAL_DELETE_PAGE_CONFIRMATION_REQUIRED_DESC: "Bu sayfayı, alt sayfalarıyla birlikte silmek istediğinize emin misiniz? Eğer sayfa başka dillere çevirilmişse bu çevirilere saklanacaktır ve ayrıca silinmelidir. Aksi halde sayfa klasörü, alt sayfalarıyla birlikte silinecektir. Bu eylem geri alınamaz."
+ AND: "ve"
+ UPDATE_AVAILABLE: "Güncelleme var"
+ METADATA_KEY: "Anahtar (örn. 'keywords')"
+ METADATA_VALUE: "Değer (örn. 'blog, grav')"
+ USERNAME_HELP: "Kullanıcı adı 3 ile 16 karakter arasında olmalıdır. Küçük harfler, sayılar, alt çizgiler ve kısa çizgi içerebilir. Büyük harf, boşluk ya da özel karakterlere izin verilmiyor"
+ FULLY_UPDATED: "Tamamen Güncellendi"
+ SAVE_LOCATION: "Kayıt konumu"
+ PAGE_FILE: "Sayfa Şablonu"
+ PAGE_FILE_HELP: "Sayfa şablonu dosya adı ve bu sayfa için varsayılan olarak görüntülenecek şablon"
+ NO_USER_ACCOUNTS: "Kullanıcı hesabı bulunamadı, önce bir tane ekleyin..."
+ REDIRECT_TRAILING_SLASH: "Redirect trailing slash"
+ REDIRECT_TRAILING_SLASH_HELP: "Perform a 301 redirect rather than transparently handling trailing slash URIs."
+ DEFAULT_DATE_FORMAT: "Sayfa tarih biçimi"
+ DEFAULT_DATE_FORMAT_HELP: "Page date format used by Grav. By default, Grav attempts to guess your date format, however you can specifiy a format using PHP's date syntax (e.g.: Y-m-d H:i)"
+ DEFAULT_DATE_FORMAT_PLACEHOLDER: "Otomatik olarak tahmin et"
+ IGNORE_FILES: "Dosyaları yoksay"
+ IGNORE_FILES_HELP: "Sayfalar işlenirken yok sayılacak belirli dosyalar"
+ IGNORE_FOLDERS: "Klasörleri yoksay"
+ IGNORE_FOLDERS_HELP: "Sayfalar işlenirken yok sayılacak belirli klasörler"
+ HTTP_ACCEPT_LANGUAGE: "Dili tarayıcıdan al"
+ HTTP_ACCEPT_LANGUAGE_HELP: "You can opt to try to set the language based on `http_accept_language` header tag in the browser"
+ OVERRIDE_LOCALE: "Yerel ayarları geçersiz kıl"
+ OVERRIDE_LOCALE_HELP: "Geçerli dili temel al ve PHP'de bulunan yerel ayarı geçersiz kıl"
+ REDIRECT: "Sayfa yönlendirmesi"
+ REDIRECT_HELP: "Enter a page route or external URL for this page to redirect to. e.g. `/some/route` or `http://somesite.com`"
+ PLUGIN_STATUS: "Eklenti durumu"
+ INCLUDE_DEFAULT_LANG: "Varsayılan dili dahil et"
+ INCLUDE_DEFAULT_LANG_HELP: "This will prepend all URLs in the default language with the default language. e.g. `/en/blog/my-post`"
+ ALLOW_URL_TAXONOMY_FILTERS: "URL Bölümlendirme(Taxonomy) Süzgeçleri"
+ ALLOW_URL_TAXONOMY_FILTERS_HELP: "Page-based collections allow you to filter via `/taxonomy:value`."
+ REDIRECT_DEFAULT_CODE: "Varsayılan yönlendirme kodu"
+ REDIRECT_DEFAULT_CODE_HELP: "Yönlendirmeler için kullanılacak HTTP durum kodu"
+ IGNORE_HIDDEN: "Ignore hidden"
+ IGNORE_HIDDEN_HELP: "NOKTA ile başlayan tüm dosya ve klasörleri yoksay"
+ WRAPPED_SITE: "Wrapped site"
+ WRAPPED_SITE_HELP: "For themes/plugins to know if Grav is wrapped by another platform"
+ FALLBACK_TYPES: "Allowed fallback types"
+ FALLBACK_TYPES_HELP: "Allowed file types that can be found if accessed via Page route. Defaults to any supported media type."
+ INLINE_TYPES: "Inline fallback types"
+ INLINE_TYPES_HELP: "A list of file types that should be displayed inline rather than downloaded"
+ APPEND_URL_EXT: "URL uzantısı ekle"
+ APPEND_URL_EXT_HELP: "Will add a custom extension to the Page's URL. Note, this will mean Grav will look for `..twig` template"
+ PAGE_MODES: "Sayfa Modları"
+ PAGE_TYPES: "Sayfa Tipleri"
+ ACCESS_LEVELS: "Erişim seviyeleri"
+ GROUPS: "Gruplar"
+ GROUPS_HELP: "List of groups the user is part of"
+ ADMIN_ACCESS: "Yönetici Erişimi"
+ SITE_ACCESS: "Site Erişimi"
+ INVALID_SECURITY_TOKEN: "Geçersiz Güvenlik Girdisi"
+ ACTIVATE: "Aktif Et"
+ TWIG_UMASK_FIX: "Umask Fix"
+ TWIG_UMASK_FIX_HELP: "Twig önbellek dosyaları varsayılan olarak 0755 iznine sahiptir, ayarları 0775 olarak düzeltin"
+ CACHE_PERMS: "Önbellek İzinleri"
+ CACHE_PERMS_HELP: "Varsayılan önbellek klasörü genellikle 0755 şeklindedir ya da kuruluma bağlı olarak 0775 olmalıdır"
+ REMOVE_SUCCESSFUL: "Kaldırma Başarılı"
+ REMOVE_FAILED: "Kaldırma Başarısız"
+ HIDE_HOME_IN_URLS: "URL'lerden anasayfayı gizle"
+ HIDE_HOME_IN_URLS_HELP: "Will ensure the default routes for any pages under home do not reference home's regular route"
+ TWIG_FIRST: "Önce Twig'i İşle"
+ TWIG_FIRST_HELP: "If you enabled Twig page processing, then you can configure Twig to process before or after markdown"
+ SESSION_SECURE: "Güvenli"
+ SESSION_SECURE_HELP: "If true, indicates that communication for this cookie must be over an encrypted transmission. WARNING: Enable this only on sites that run exclusively on HTTPS"
+ SESSION_HTTPONLY: "Yalnız HTTP"
+ SESSION_HTTPONLY_HELP: "If true, indicates that cookies should be used only over HTTP, and JavaScript modification is not allowed"
+ REVERSE_PROXY: "Reverse Proxy"
+ REVERSE_PROXY_HELP: "Enable this if you are behind a reverse proxy and you are having trouble with URLs containing incorrect ports"
+ INVALID_FRONTMATTER_COULD_NOT_SAVE: "Geçersiz frontmatter, kaydedilmedi"
+ ADD_FOLDER: "Klasör Ekle"
+ PROXY_URL: "Proxy URL'si"
+ PROXY_URL_HELP: "Proksi sunucusunun HOST ya da IP ve PORT bilgisini gir"
+ NOTHING_TO_SAVE: "Kaydedilecek Hiçbirşey Yok"
+ FILE_ERROR_ADD: "Dosya eklenirken bir hata meydana geldi"
+ FILE_ERROR_UPLOAD: "Dosya yüklenirken bir hata meydana geldi"
+ FILE_UNSUPPORTED: "Desteklenmeyen dosya biçimi"
+ ADD_ITEM: "Öge ekle"
+ FILE_TOO_LARGE: "Bu dosya yüklenebilecek boyuttan daha büyük, PHP ayarlarınıza göre maksimum boyut %s `post_max_size` değerini artırın"
+ INSTALLING: "Kuruluyor"
+ LOADING: "Yükleniyor.."
+ DEPENDENCIES_NOT_MET_MESSAGE: "The following dependencies need to be fulfilled first:"
+ ERROR_INSTALLING_PACKAGES: "Paket(ler) kurulurken hata oluştu"
+ INSTALLING_DEPENDENCIES: "Gereksinimler kuruluyor..."
+ INSTALLING_PACKAGES: "Paket(ler) kuruluyor.."
+ PACKAGES_SUCCESSFULLY_INSTALLED: "Paket(ler) başarıyla kuruldu."
+ READY_TO_INSTALL_PACKAGES: "Kuruluma hazır paket(ler)"
+ PACKAGES_NOT_INSTALLED: "Yüklü olmayan paketler"
+ PACKAGES_NEED_UPDATE: "Paketler zaten yüklü, fakat eski"
+ PACKAGES_SUGGESTED_UPDATE: "Paketler zaten yüklü ve en güncel sürümlerinde"
+ REMOVE_THE: "Kaldır: %s"
+ CONFIRM_REMOVAL: "Bunu silmek istediğinizden emin misiniz: %s?"
+ REMOVED_SUCCESSFULLY: "%s başarıyla kaldırıldı"
+ ERROR_REMOVING_THE: "%s kaldırılırken hata"
+ ADDITIONAL_DEPENDENCIES_CAN_BE_REMOVED: "%s diğer kurulu paketler tarafından kullanılmayan birtakım gereksinimler içeriyor. Kullanmıyorsanız direkt olarak silebilirsiniz."
+ READY_TO_UPDATE_PACKAGES: "Güncellemeye hazır paket(ler)"
+ ERROR_UPDATING_PACKAGES: "Paket(ler) günceleştirilirken hata oluştu"
+ UPDATING_PACKAGES: "Paket(ler) güncelleştiriliyor.."
+ PACKAGES_SUCCESSFULLY_UPDATED: "Paket(ler) başarıyla güncellendi."
+ UPDATING: "Güncelleniyor"
+ GPM_RELEASES: "GPM Duyuruları"
+ GPM_RELEASES_HELP: "Beta sürümünü veya test sürümlerini yüklemek için 'Test' seçeneğini belirleyin"
+ GPM_METHOD: "Remote Fetch Method"
+ GPM_METHOD_HELP: "When set to Auto, Grav will determine if fopen is available and use it, otherwise fall back to cURL. To force the use of one or the other switch the setting."
+ GPM_VERIFY_PEER: "Remote Verify Peer (SSL)"
+ GPM_VERIFY_PEER_HELP: "Some providers seems to fail verifying getgrav.org SSL certificate, causing GPM to not work. If this is the case for you, turning off this setting might help"
+ AUTO: "Otomatik"
+ FOPEN: "fopen"
+ CURL: "cURL"
+ STABLE: "Kararlı"
+ TESTING: "Test ediliyor"
+ FRONTMATTER_PROCESS_TWIG: "Process frontmatter Twig"
+ FRONTMATTER_PROCESS_TWIG_HELP: "When enabled you can use Twig config variables in page front matter"
+ FRONTMATTER_IGNORE_FIELDS: "Ignore frontmatter fields"
+ FRONTMATTER_IGNORE_FIELDS_HELP: "Certain frontmatter fields may contain Twig but should not be processed, such as 'forms'"
+ PACKAGE_X_INSTALLED_SUCCESSFULLY: "%s başarıyla yüklendi"
+ ORDERING_DISABLED_BECAUSE_PARENT_SETTING_ORDER: "Parent setting order, ordering disabled"
+ ORDERING_DISABLED_BECAUSE_PAGE_NOT_VISIBLE: "Sayfa görüntülenebilir değil, sıralama devredışı"
+ ORDERING_DISABLED_BECAUSE_TOO_MANY_SIBLINGS: "Ordering via the admin is unsupported because there are more than 200 siblings"
+ ORDERING_DISABLED_BECAUSE_PAGE_NO_PREFIX: "Page ordering is disabled for this page because Folder Numeric Prefix is not enabled"
+ CANNOT_ADD_MEDIA_FILES_PAGE_NOT_SAVED: "NOTE: You cannot add media files until you save the page. Just click 'Save' on top"
+ CANNOT_ADD_FILES_PAGE_NOT_SAVED: "NOTE: Page must be saved before you can upload files to it."
+ DROP_FILES_HERE_TO_UPLOAD: "Drop your files here or click in this area"
+ INSERT: "Ekle"
+ UNDO: "Geri al"
+ REDO: "İleri al"
+ HEADERS: "Başlıklar"
+ BOLD: "Kalın"
+ ITALIC: "Eğik"
+ STRIKETHROUGH: "Üstü Çizili"
+ SUMMARY_DELIMITER: "Özet ayracı"
+ LINK: "Bağlantı"
+ IMAGE: "Resim"
+ BLOCKQUOTE: "Alıntı"
+ UNORDERED_LIST: "Sırasız Liste"
+ ORDERED_LIST: "Sıralı Liste"
+ EDITOR: "Düzenleyici"
+ PREVIEW: "Önizleme"
+ FULLSCREEN: "Tam Ekran"
+ MODULAR: "Modüler"
+ NON_ROUTABLE: "Yönlendirilemeyen"
+ NON_MODULAR: "Modüler Olmayan"
+ NON_VISIBLE: "Görünür Olmayan"
+ NON_PUBLISHED: "Yayımlanmamış"
+ CHARACTERS: "karakter"
+ PUBLISHING: "Yayımlanıyor"
+ NOTIFICATIONS: "Bildirimler"
+ MEDIA_TYPES: "Ortam Türleri"
+ IMAGE_OPTIONS: "Görüntü Seçenekleri"
+ MIME_TYPE: "Mime Türü"
+ THUMB: "Küçük Resim"
+ TYPE: "Tür"
+ FILE_EXTENSION: "Dosya Uzantısı"
+ LEGEND: "Sayfa Göstergesi"
+ MEMCACHE_SERVER: "Memcache sunucusu"
+ MEMCACHE_SERVER_HELP: "Memcache sunucu adresi"
+ MEMCACHE_PORT: "Memcache bağlantı noktası"
+ MEMCACHE_PORT_HELP: "Memcache sunucusu bağlantı noktası"
+ MEMCACHED_SERVER: "Memcached sunucusu"
+ MEMCACHED_SERVER_HELP: "Memcached sunucu adresi"
+ MEMCACHED_PORT: "Memcached bağlantı noktası"
+ MEMCACHED_PORT_HELP: "Memcached sunucusu bağlantı noktası"
+ REDIS_SERVER: "Redis sunucusu"
+ REDIS_SERVER_HELP: "Redis sunucu adresi"
+ REDIS_PORT: "Redis bağlantı noktası"
+ REDIS_PORT_HELP: "Redis sunucusu bağlantı noktası"
+ REDIS_PASSWORD: "Redis password/secret"
+ ALL: "Tümü"
+ FROM: "Başlangıç"
+ TO: "ile"
+ RELEASE_DATE: "Yayınlanma Tarihi"
+ SORT_BY: "Sıralama Ölçütü"
+ RESOURCE_FILTER: "Filtrele..."
+ FORCE_SSL: "SSL Kullanmaya Zorla"
+ FORCE_SSL_HELP: "Globally force SSL, if enabled when the site is reached through HTTP, Grav sends a redirect to the HTTPS page"
+ NEWS_FEED: "Haber Kaynağı"
+ EXTERNAL_URL: "Harici Bağlantı"
+ SESSION_PATH: "The session path"
+ SESSION_PATH_HELP: "Use only if you choose a custom base URL (you rewrite the site domain / subfolder)"
+ CUSTOM_BASE_URL: "Özelleştirilmiş kök URL"
+ CUSTOM_BASE_URL_HELP: "Use if you want to rewrite the site domain or use a different subfolder than the one used by Grav. Example: http://localhost"
+ FILEUPLOAD_PREVENT_SELF: '"%s" sayfalar dışarısında kullanılamaz.'
+ FILEUPLOAD_UNABLE_TO_UPLOAD: 'Unable to upload file %s: %s'
+ FILEUPLOAD_UNABLE_TO_MOVE: '%s dosyası "%s" konumuna taşınamadı'
+ DROPZONE_CANCEL_UPLOAD: 'Yüklemeyi iptal et'
+ DROPZONE_CANCEL_UPLOAD_CONFIRMATION: 'Bu yüklemeyi iptal etmek istediğinizden emin misiniz?'
+ DROPZONE_DEFAULT_MESSAGE: 'Dosyalarınızı buraya sürükleyin ya da bu alana tıklayın'
+ DROPZONE_FALLBACK_MESSAGE: 'Tarayıcınız sürükle bırak şeklinde yüklemeleri desteklemiyor.'
+ DROPZONE_FALLBACK_TEXT: 'Please use the fallback form below to upload your files like in the older days.'
+ DROPZONE_FILE_TOO_BIG: 'Dosya fazla büyük ({{filesize}}MiB), maksimum dosya boyutu {{maxFilesize}} MiB’dir.'
+ DROPZONE_INVALID_FILE_TYPE: "Bu türdeki dosyaları yükleyemezsiniz."
+ DROPZONE_MAX_FILES_EXCEEDED: "Daha fazla dosya yükleyemezsiniz."
+ DROPZONE_REMOVE_FILE: "Dosyayı Kaldır"
+ DROPZONE_RESPONSE_ERROR: "Sunucu {{statusCode}} koduyla cevap verdi."
+ PREMIUM_PRODUCT: "Premium"
+ ADMIN_CACHING: "Admin sayfasında önbelleği etkinleştir"
+ ADMIN_CACHING_HELP: "Caching in the admin can be controlled independently from the front-end site"
+ DESTINATION_NOT_SPECIFIED: "Hedef belirtilmedi"
+ UPLOAD_ERR_NO_TMP_DIR: "Missing a temporary folder"
+ SESSION_SPLIT: "Session Split"
+ SESSION_SPLIT_HELP: "Independent split sessions between site and other plugins (such as admin)"
+ ERROR_FULL_BACKTRACE: "Tam Backtrace Hatası"
+ ERROR_SIMPLE: "Basit Hata"
+ ERROR_SYSTEM: "Sistem Hatası"
+ IMAGES_AUTO_FIX_ORIENTATION: "Fix orientation automatically"
+ IMAGES_AUTO_FIX_ORIENTATION_HELP: "Automatically fix the image orientation based on the Exif data"
+ REDIS_SOCKET: "Redis socket"
+ REDIS_SOCKET_HELP: "The Redis socket"
+ NOT_SET: "Not set"
+ PERMISSIONS: "İzinler"
+ NEVER_CACHE_TWIG: "Twig'i asla önbelleğe alma"
+ NEVER_CACHE_TWIG_HELP: "Sadece içeriği önbelleğe al ve sayfalar için her seferinde Twig çalışsın. twig_first seçeneği yoksayılacaktır."
+ ALLOW_WEBSERVER_GZIP: "Sunucu Gzip sıkıştırmasına izin ver"
+ ALLOW_WEBSERVER_GZIP_HELP: "Off by default. When enabled, WebServer-configured Gzip/Deflate compression will work, but http connection will not be closed before onShutDown() event causing slower page loading"
+ OFFLINE_WARNING: "GPM ile bağlantı kurulamadı"
+ CLEAR_IMAGES_BY_DEFAULT: "Clear image cache by default"
+ CLEAR_IMAGES_BY_DEFAULT_HELP: "By default processed images are cleared for all cache clears, this can be disabled"
+ CLI_COMPATIBILITY: "CLI Uyumluluğu"
+ CLI_COMPATIBILITY_HELP: "Ensures that only non-volatile Cache drivers are used (file, redis, memcache, etc.)"
+ REINSTALL_PLUGIN: "Eklentiyi yeniden kur"
+ REINSTALL_THEME: "Temayı yeniden kur"
+ REINSTALL_THE: "Reinstall the %s"
+ CONFIRM_REINSTALL: "Are you sure you want to reinstall this %s?"
+ REINSTALLED_SUCCESSFULLY: "%s reinstalled successfully"
+ ERROR_REINSTALLING_THE: "Error reinstalling the %s"
+ PACKAGE_X_REINSTALLED_SUCCESSFULLY: "Package %s reinstalled successfully"
+ REINSTALLATION_FAILED: "Yeniden kurulum hatasi"
+ WARNING_REINSTALL_NOT_LATEST_RELEASE: "The installed version is not the latest release. By clicking Continue, you'll remove the current version and install the latest available release"
+ TOOLS: "Araçlar"
+ DIRECT_INSTALL: "Yükleme yolu"
+ NO_PACKAGE_NAME: "Package name not specified"
+ PACKAGE_EXTRACTION_FAILED: "Package extraction failed"
+ NOT_VALID_GRAV_PACKAGE: "Not a valid Grav package"
+ NAME_COULD_NOT_BE_DETERMINED: "Name could not be determined"
+ CANNOT_OVERWRITE_SYMLINKS: "Cannot overwrite symlinks"
+ ZIP_PACKAGE_NOT_FOUND: "ZIP package could not be found"
+ GPM_OFFICIAL_ONLY: "Official GPM Only"
+ GPM_OFFICIAL_ONLY_HELP: "Only allow direct installs from the official GPM repository only."
+ NO_CHILD_TYPE: "No child type for this rawroute"
+ SORTABLE_PAGES: "Sortable Pages:"
+ UNSORTABLE_PAGES: "Sıralanamayan Sayfalar"
+ ADMIN_SPECIFIC_OVERRIDES: "Admin Specific Overrides"
+ ADMIN_CHILDREN_DISPLAY_ORDER: "Children Display Order"
+ ADMIN_CHILDREN_DISPLAY_ORDER_HELP: "The order that children of this page should be displayed in the 'Pages' view of Admin plugin"
+ PWD_PLACEHOLDER: "complex string at least 8 chars long"
+ PWD_REGEX: "Password Regex"
+ PWD_REGEX_HELP: "By default: Password must contain at least one number and one uppercase and lowercase letter, and at least 8 or more characters"
+ USERNAME_PLACEHOLDER: "lowercase chars only, e.g. 'admin'"
+ USERNAME_REGEX: "Username Regex"
+ USERNAME_REGEX_HELP: "By default: Only lowercase chars, digits, dashes, and underscores. 3 - 16 chars"
+ CONTENT_PADDING: "Content padding"
+ CONTENT_PADDING_HELP: "Enable/Disable content padding around content area to provide more space"
+ ENABLE_AUTO_METADATA: "Auto metadata from Exif"
+ ENABLE_AUTO_METADATA_HELP: "Görsel için otomatikman EXIF bilgilerini kullanarak metadata dosyası oluştur"
+ 2FA_TITLE: "2-Adımlı Doğrulama"
+ 2FA_INSTRUCTIONS: "##### 2-Adımlı Doğrulama\nHesabınızda **2FA** etkin durumda. Lütfen giriş yapabilmek için **2FA** uygulamanızı kullanarak **6-digit code** girin."
+ 2FA_REGEN_HINT: "Gizli anahtarı yeniden oluşturursanız kimlik doğrulama uygulamasını güncellemeniz gereklidir"
+ 2FA_LABEL: "Yönetici Erişimi"
+ 2FA_FAILED: "Invalid 2-Factor Authentication code, please try again...\nGeçersiz 2FA doğrulama kodu, lütfen tekrar deneyin..."
+ 2FA_ENABLED: "2FA Etkin"
+ 2FA_CODE_INPUT: "000000"
+ 2FA_SECRET: "2FA Doğrulama Anahtarı"
+ 2FA_REGENERATE: "Yeniden Oluştur"
+ FORCE_LOWERCASE_URLS: "URL harflerini küçült"
+ FORCE_LOWERCASE_URLS_HELP: "Varsayılan olarak Grav, URL'de ki tüm harfleri küçültecektir, Bunu kapalı hale getirirseniz URL içinde büyük harfler kullanılabilir."
+ INTL_ENABLED: "Intl modül entegrasyonu"
+ VIEW_SITE_TIP: "Siteyi görüntüle"
+ TOOLS_DIRECT_INSTALL_TITLE: "Grav Paketlerini Doğrudan Yükle"
+ TOOLS_DIRECT_INSTALL_UPLOAD_TITLE: "ZIP Olarak Paket Yükle ve Kur"
+ TOOLS_DIRECT_INSTALL_UPLOAD_DESC: "Bu yöntemle geçerli birtema ya da eklentipaketini, hatta Grav güncelleme paketini ZIP olarak yükleyebilirsin. Bu paketin GPM ile kaydedilmesi gerekmez ve önceki bir sürüme kolayca geri dönmenizi veya test için yüklemenizi sağlar."
+ TOOLS_DIRECT_INSTALL_URL_TITLE: "Uzak URL ile Paket Yükle"
+ TOOLS_DIRECT_INSTALL_URL_DESC: "Alternatif bir yöntem olarak, paketin tam ZIP dosyasının bulunduğu uzak adresi belirterek yükleyebilirsin."
+ TOOLS_DIRECT_INSTALL_UPLOAD_BUTTON: "Yükle ve kur"
+ ROUTE_OVERRIDES: "Geçersiz Rotalar"
+ ROUTE_DEFAULT: "Varsayılan Rota"
+ ROUTE_CANONICAL: "Standart Rota"
+ ROUTE_ALIASES: "Rota Takma Adları"
diff --git a/user/plugins/admin/languages/uk.yaml b/user/plugins/admin/languages/uk.yaml
new file mode 100644
index 0000000..53bad9a
--- /dev/null
+++ b/user/plugins/admin/languages/uk.yaml
@@ -0,0 +1,552 @@
+---
+PLUGIN_ADMIN:
+ ADMIN_BETA_MSG: "Це бета-реліз! Використовуйте його на продуктовому сервері на свій страх і ризик..."
+ ADMIN_REPORT_ISSUE: "Виявила проблему? Будь ласка, повідомте про це на GitHub."
+ LOGIN_BTN: "Увійти"
+ LOGIN_BTN_FORGOT: "Забув"
+ LOGIN_BTN_RESET: "Скинути пароль"
+ LOGIN_BTN_SEND_INSTRUCTIONS: "Надіслати інструкції для скидання"
+ LOGIN_BTN_CLEAR: "Очистити форму"
+ LOGIN_BTN_CREATE_USER: "Створити користувача"
+ LOGIN_LOGGED_IN: "Ви успішно увійшли"
+ LOGIN_FAILED: "Не вдалося увійти"
+ LOGGED_OUT: "Ви вийшли з системи"
+ RESET_NEW_PASSWORD: "Будь ласка, введіть новий пароль …"
+ RESET_LINK_EXPIRED: "Час на скидання минув. Будь ласка, спробуйте ще раз"
+ RESET_PASSWORD_RESET: "Пароль було скинуто"
+ RESET_INVALID_LINK: "Використовується недійсне посилання на скидання, будь ласка, спробуйте ще раз"
+ FORGOT_INSTRUCTIONS_SENT_VIA_EMAIL: "Інструкції для скидання пароля були відправлені на вашу електронну адресу"
+ FORGOT_FAILED_TO_EMAIL: "Не вдалося надіслати інструкції, будь ласка спробуйте пізніше"
+ FORGOT_CANNOT_RESET_EMAIL_NO_EMAIL: "Не вдалося скинути пароль для %s, не вказано емейл"
+ FORGOT_USERNAME_DOES_NOT_EXIST: "Користувач з ім'ям користувача %s не існує"
+ FORGOT_EMAIL_NOT_CONFIGURED: "Не вдалося скинути пароль. Цей сайт не налаштований для відправлення електронних листів"
+ FORGOT_EMAIL_SUBJECT: "%s Запит на скидання пароля"
+ FORGOT_EMAIL_BODY: "
")}),l.open()}),this.container.delegate(".dz-preview","dragstart",function(e){var n=(0,c.default)(e.currentTarget),r=encodeURI(n.find(".dz-filename").text()),i=(0,p.UriToMarkdown)(r);t.dropzone.disable(),n.addClass("hide-backface"),e.originalEvent.dataTransfer.effectAllowed="copy",e.originalEvent.dataTransfer.setData("text",i)}),this.container.delegate(".dz-preview","dragend",function(e){var n=(0,c.default)(e.currentTarget);t.dropzone.enable(),n.removeClass("hide-backface")})}}]),n}(h.default);t.default=b;t.Instance=new b}).call(t,function(){return this}())},function(e,t,n){(function(e){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e){return e=e.replace(/@3x|@2x|@1x/,""),e=e.replace(/\(/g,"%28"),e=e.replace(/\)/g,"%29"),e.match(/\.(jpe?g|png|gif|svg|mp4|webm|ogv|mov)$/i)?"":"["+decodeURI(e)+"]("+e+")"}Object.defineProperty(t,"__esModule",{value:!0}),t.Instances=void 0;var o=function(){function e(e,t){for(var n=0;n"),dictRemoveFileConfirmation:"[placeholder]",previewTemplate:('\n