Upgrade to 3.9.1

This commit is contained in:
Bastian Allgeier
2023-01-31 11:10:44 +01:00
parent 6e5c9d1f48
commit c58864a585
54 changed files with 633 additions and 465 deletions

View File

@@ -1,10 +1,9 @@
[<img src="http://getkirby.com/assets/images/github/kirby.jpg" width="300">](https://getkirby.com) [<img src="https://getkirby.com/assets/images/github/kirby.jpg" width="300">](https://getkirby.com)
[![Release](https://badgen.net/github/release/getkirby/kirby/stable?color=yellow)](https://github.com/getkirby/kirby/releases/latest) [![Release](https://img.shields.io/github/v/release/getkirby/kirby)](https://github.com/getkirby/kirby/releases/latest)
[![CI Status](https://github.com/getkirby/kirby/workflows/CI/badge.svg)](https://github.com/getkirby/kirby/actions?query=workflow%3ACI) [![CI Status](https://img.shields.io/github/actions/workflow/status/getkirby/kirby/ci.yml?branch=main&label=CI)](https://github.com/getkirby/kirby/actions?query=workflow%3ACI+branch%3Amain)
[![Coverage Status](https://badgen.net/codecov/c/gh/getkirby/kirby/main?label=coverage)](https://codecov.io/gh/getkirby/kirby) [![Coverage Status](https://img.shields.io/codecov/c/gh/getkirby/kirby?token=ROZ2RVA0OF)](https://codecov.io/gh/getkirby/kirby)
[![Downloads](https://badgen.net/packagist/dt/getkirby/cms?color=red)](https://github.com/getkirby/kirby/releases/latest) [![Downloads](https://img.shields.io/packagist/dt/getkirby/cms?color=red)](https://github.com/getkirby/kirby/releases/latest)
[![Twitter](https://badgen.net/twitter/follow/getkirby?color=cyan)](https://twitter.com/getkirby)
**Kirby: the CMS that adapts to any project, loved by developers and editors alike.** **Kirby: the CMS that adapts to any project, loved by developers and editors alike.**
With Kirby, you build your own ideal interface. Combine forms, galleries, articles, spreadsheets and more into an amazing editing experience. You can learn more about Kirby at [getkirby.com](https://getkirby.com). With Kirby, you build your own ideal interface. Combine forms, galleries, articles, spreadsheets and more into an amazing editing experience. You can learn more about Kirby at [getkirby.com](https://getkirby.com).
@@ -14,7 +13,7 @@ This is Kirby's core application folder. Get started with one of the following r
- [Starterkit](https://github.com/getkirby/starterkit) - [Starterkit](https://github.com/getkirby/starterkit)
- [Plainkit](https://github.com/getkirby/plainkit) - [Plainkit](https://github.com/getkirby/plainkit)
<img src="http://getkirby.com/assets/images/github/kirby-screen.png" /> <img src="https://getkirby.com/assets/images/github/kirby-screen.png" />
### Try Kirby for free ### Try Kirby for free
Kirby is not free software. However, you can try Kirby and the Starterkit on your local machine or on a test server as long as you need to make sure it is the right tool for your next project. … and when youre convinced, [buy your license](https://getkirby.com/buy). Kirby is not free software. However, you can try Kirby and the Starterkit on your local machine or on a test server as long as you need to make sure it is the right tool for your next project. … and when youre convinced, [buy your license](https://getkirby.com/buy).
@@ -30,8 +29,6 @@ If you have ideas for a feature or enhancement for Kirby, please use our [feedba
**Translations, bug fixes, code contributions ...** **Translations, bug fixes, code contributions ...**
Read about how to contribute to the development in our [contributing guide](/CONTRIBUTING.md). Read about how to contribute to the development in our [contributing guide](/CONTRIBUTING.md).
## What's Kirby? ## What's Kirby?
- **[getkirby.com](https://getkirby.com)** Get to know the CMS. - **[getkirby.com](https://getkirby.com)** Get to know the CMS.
- **[Try it](https://getkirby.com/try)** Take a test ride with our online demo. Or download one of our kits to get started. - **[Try it](https://getkirby.com/try)** Take a test ride with our online demo. Or download one of our kits to get started.
@@ -40,10 +37,11 @@ Read about how to contribute to the development in our [contributing guide](/CON
- **[Feedback](https://feedback.getkirby.com)** You have an idea for Kirby? Share it. - **[Feedback](https://feedback.getkirby.com)** You have an idea for Kirby? Share it.
- **[Forum](https://forum.getkirby.com)** Whenever you get stuck, don't hesitate to reach out for questions and support. - **[Forum](https://forum.getkirby.com)** Whenever you get stuck, don't hesitate to reach out for questions and support.
- **[Discord](https://chat.getkirby.com)** Hang out and meet the community. - **[Discord](https://chat.getkirby.com)** Hang out and meet the community.
- **[Twitter](https://twitter.com/getkirby)** Spread the word. - **[YouTube](https://youtube.com/kirbyCasts)** - Watch the latest video tutorials visually with Bastian.
- **[Mastodon](https://mastodon.social/@getkirby)** Spread the word.
- **[Instagram](https://www.instagram.com/getkirby/)** Share your creations: #madewithkirby. - **[Instagram](https://www.instagram.com/getkirby/)** Share your creations: #madewithkirby.
--- ---
© 2009-2022 Bastian Allgeier © 2009-2023 Bastian Allgeier
[getkirby.com](https://getkirby.com) · [License agreement](https://getkirby.com/license) [getkirby.com](https://getkirby.com) · [License agreement](https://getkirby.com/license)

View File

@@ -3,7 +3,7 @@
"description": "The Kirby 3 core", "description": "The Kirby 3 core",
"license": "proprietary", "license": "proprietary",
"type": "kirby-cms", "type": "kirby-cms",
"version": "3.9.0", "version": "3.9.1",
"keywords": [ "keywords": [
"kirby", "kirby",
"cms", "cms",

2
kirby/composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "65b578807e38bf1bf4af1ba64445d9f9", "content-hash": "befcfd99f474ab4c303eb4b9fa9262ad",
"packages": [ "packages": [
{ {
"name": "claviska/simpleimage", "name": "claviska/simpleimage",

View File

@@ -82,7 +82,7 @@ return [
$this->user($id)->avatar()?->delete(); $this->user($id)->avatar()?->delete();
return $this->upload( return $this->upload(
function ($source, $filename) { function ($source, $filename) use ($id) {
$props = [ $props = [
'filename' => 'profile.' . F::extension($filename), 'filename' => 'profile.' . F::extension($filename),
'template' => 'avatar', 'template' => 'avatar',

View File

@@ -280,7 +280,7 @@ return [
* @param string|array $name Snippet name * @param string|array $name Snippet name
* @param array $data Data array for the snippet * @param array $data Data array for the snippet
*/ */
'snippet' => function (App $kirby, string|array $name, array $data = [], bool $slots = false): Snippet|string { 'snippet' => function (App $kirby, string|array|null $name, array $data = [], bool $slots = false): Snippet|string {
return Snippet::factory($name, $data, $slots); return Snippet::factory($name, $data, $slots);
}, },

View File

@@ -570,9 +570,18 @@ class ParsedownExtra extends Parsedown
$DOMDocument = new DOMDocument(); $DOMDocument = new DOMDocument();
# http://stackoverflow.com/q/11309194/200145 // Migrating away from `mb_convert_encoding($elementMarkup,
$elementMarkup = htmlentities($elementMarkup); //'HTML-ENTITIES', 'UTF-8');` has caused multibyte characters like
$elementMarkup = htmlspecialchars_decode($elementMarkup); // emojis not to be converted into entities, which is needed so that
// the `DOM` extension can properly parse the markup.
// The following line works like this: It treats the input string
// as UTF-8 and converts every Unicode character with 8 or more bits
// (= character code starting at 128 or 0x80 up to the Unicode limit
// of 0x10ffff) to an entity; the third and fourth arguments for the
// map are not needed for our use case and are set to the default values
// (no offset and a full mask)
// [http://stackoverflow.com/q/11309194/200145]
$elementMarkup = mb_encode_numericentity($elementMarkup, [0x80, 0x10ffff, 0, 0xffffff], 'UTF-8');
# Ensure that saveHTML() is not remove new line characters. New lines will be split by this character. # Ensure that saveHTML() is not remove new line characters. New lines will be split by this character.
$DOMDocument->formatOutput = true; $DOMDocument->formatOutput = true;

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "You must add at least one block",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Email шаблонът \"{name}\" не може да бъде открит", "error.email.preset.notFound": "Email шаблонът \"{name}\" не може да бъде открит",
"error.field.converter.invalid": "Невалиден конвертор \"{converter}\"", "error.field.converter.invalid": "Невалиден конвертор \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Панелът не може да бъде инсталиран", "installation.issues.headline": "Панелът не може да бъде инсталиран",
"installation.issues.mbstring": "Изисква се разширението <code>MB String</code>", "installation.issues.mbstring": "Изисква се разширението <code>MB String</code>",
"installation.issues.media": "Папката <code>/media</code> не съществува или няма права за запис", "installation.issues.media": "Папката <code>/media</code> не съществува или няма права за запис",
"installation.issues.php": "Бъдете сигурни, че използвате <code>PHP 7+</code>", "installation.issues.php": "Бъдете сигурни, че използвате <code>PHP 8+</code>",
"installation.issues.server": "Kirby изисква <code>Apache</code>, <code>Nginx</code> или <code>Caddy</code>", "installation.issues.server": "Kirby изисква <code>Apache</code>, <code>Nginx</code> или <code>Caddy</code>",
"installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable", "installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "You must add at least one block",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "No es pot trobar la configuració de correu electrònic \"{name}\"", "error.email.preset.notFound": "No es pot trobar la configuració de correu electrònic \"{name}\"",
"error.field.converter.invalid": "Convertidor no vàlid \"{converter}\"", "error.field.converter.invalid": "Convertidor no vàlid \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "El panell no es pot instal·lar", "installation.issues.headline": "El panell no es pot instal·lar",
"installation.issues.mbstring": "Es requereix l'extensió de <code>MB String</code>", "installation.issues.mbstring": "Es requereix l'extensió de <code>MB String</code>",
"installation.issues.media": "La carpeta <code>/media</code> no existeix o no es pot escriure", "installation.issues.media": "La carpeta <code>/media</code> no existeix o no es pot escriure",
"installation.issues.php": "Assegureu-vos d'utilitzar <code>PHP 7+</code>", "installation.issues.php": "Assegureu-vos d'utilitzar <code>PHP 8+</code>",
"installation.issues.server": "Kirby requereix <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>", "installation.issues.server": "Kirby requereix <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existeix o no es pot escriure", "installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existeix o no es pot escriure",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Musíte přidat alespoň jeden blok", "error.blocks.min.singular": "Musíte přidat alespoň jeden blok",
"error.blocks.validation": "V poli \"{field}\" v bloku {index} je při použití \"{fieldset}\" typu chyba", "error.blocks.validation": "V poli \"{field}\" v bloku {index} je při použití \"{fieldset}\" typu chyba",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Nelze nalézt emailové přednastavení \"{name}\"", "error.email.preset.notFound": "Nelze nalézt emailové přednastavení \"{name}\"",
"error.field.converter.invalid": "Neplatný konvertor \"{converter}\"", "error.field.converter.invalid": "Neplatný konvertor \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Panel nelze nainstalovat", "installation.issues.headline": "Panel nelze nainstalovat",
"installation.issues.mbstring": "Je vyžadováno rozšíření<code>MB String</code>", "installation.issues.mbstring": "Je vyžadováno rozšíření<code>MB String</code>",
"installation.issues.media": "Složka<code>/media</code> neexistuje, nebo nemá povolený zápis", "installation.issues.media": "Složka<code>/media</code> neexistuje, nebo nemá povolený zápis",
"installation.issues.php": "Ujistěte se, že používáte<code>PHP 7+</code>", "installation.issues.php": "Ujistěte se, že používáte<code>PHP 8+</code>",
"installation.issues.server": "Kirby vyžaduje<code>Apache</code>, <code>Nginx</code> nebo<code>Caddy</code>", "installation.issues.server": "Kirby vyžaduje<code>Apache</code>, <code>Nginx</code> nebo<code>Caddy</code>",
"installation.issues.sessions": "Složka<code>/site/sessions</code> neexistuje, nebo nemá povolený zápis", "installation.issues.sessions": "Složka<code>/site/sessions</code> neexistuje, nebo nemá povolený zápis",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Du skal tilføje minimum een blok", "error.blocks.min.singular": "Du skal tilføje minimum een blok",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Email preset \"{name}\" findes ikke", "error.email.preset.notFound": "Email preset \"{name}\" findes ikke",
"error.field.converter.invalid": "Ugyldig converter \"{converter}\"", "error.field.converter.invalid": "Ugyldig converter \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Panelet kan ikke installeres", "installation.issues.headline": "Panelet kan ikke installeres",
"installation.issues.mbstring": "<code>MB String</code> extension er påkrævet", "installation.issues.mbstring": "<code>MB String</code> extension er påkrævet",
"installation.issues.media": "<code>/media</code> mappen eksisterer ikke eller er ikke skrivbar", "installation.issues.media": "<code>/media</code> mappen eksisterer ikke eller er ikke skrivbar",
"installation.issues.php": "Sikre dig at der benyttes <code>PHP 7+</code>", "installation.issues.php": "Sikre dig at der benyttes <code>PHP 8+</code>",
"installation.issues.server": "Kirby kræver <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>", "installation.issues.server": "Kirby kræver <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
"installation.issues.sessions": "/site/sessions mappen eksisterer ikke eller er ikke skrivbar", "installation.issues.sessions": "/site/sessions mappen eksisterer ikke eller er ikke skrivbar",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Bitte füge mindestens einen Block hinzu", "error.blocks.min.singular": "Bitte füge mindestens einen Block hinzu",
"error.blocks.validation": "Fehler im \"{field}\" Feld in Block {index} mit dem Block Typ \"{fieldset}\"", "error.blocks.validation": "Fehler im \"{field}\" Feld in Block {index} mit dem Block Typ \"{fieldset}\"",
"error.cache.type.invalid": "Ungültiger Cachetyp: \"{type}\"",
"error.email.preset.notFound": "Die E-Mailvorlage \"{name}\" wurde nicht gefunden", "error.email.preset.notFound": "Die E-Mailvorlage \"{name}\" wurde nicht gefunden",
"error.field.converter.invalid": "Ungültiger Konverter: \"{converter}\"", "error.field.converter.invalid": "Ungültiger Konverter: \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Das Panel kann nicht installiert werden", "installation.issues.headline": "Das Panel kann nicht installiert werden",
"installation.issues.mbstring": "Die <code>MB String</code> Erweiterung wird benötigt", "installation.issues.mbstring": "Die <code>MB String</code> Erweiterung wird benötigt",
"installation.issues.media": "Der <code>/media</code> Ordner ist nicht beschreibbar", "installation.issues.media": "Der <code>/media</code> Ordner ist nicht beschreibbar",
"installation.issues.php": "Bitte verwende <code>PHP 7+</code>", "installation.issues.php": "Bitte verwende <code>PHP 8+</code>",
"installation.issues.server": "Kirby benötigt <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>", "installation.issues.server": "Kirby benötigt <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>",
"installation.issues.sessions": "<code>/site/sessions</code> ist nicht beschreibbar", "installation.issues.sessions": "<code>/site/sessions</code> ist nicht beschreibbar",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "You must add at least one block",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Δεν είναι δυνατή η εύρεση της προεπιλογής διεύθινσης ηλεκτρονικού ταχυδρομείου \"{name}\"", "error.email.preset.notFound": "Δεν είναι δυνατή η εύρεση της προεπιλογής διεύθινσης ηλεκτρονικού ταχυδρομείου \"{name}\"",
"error.field.converter.invalid": "Μη έγκυρος μετατροπέας \"{converter}\"", "error.field.converter.invalid": "Μη έγκυρος μετατροπέας \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Ο πίνακας ελέγχου δεν μπορεί να εγκατασταθεί", "installation.issues.headline": "Ο πίνακας ελέγχου δεν μπορεί να εγκατασταθεί",
"installation.issues.mbstring": "Απαιτείται η επέκταση <code>MB String</code> ", "installation.issues.mbstring": "Απαιτείται η επέκταση <code>MB String</code> ",
"installation.issues.media": "Ο φάκελος <code>/media</code> δεν υπάρχει ή δεν είναι εγγράψιμος", "installation.issues.media": "Ο φάκελος <code>/media</code> δεν υπάρχει ή δεν είναι εγγράψιμος",
"installation.issues.php": "Βεβαιωθείτε ότι χρησιμοποιήτε <code>PHP 7+</code>", "installation.issues.php": "Βεβαιωθείτε ότι χρησιμοποιήτε <code>PHP 8+</code>",
"installation.issues.server": "To Kirby απαιτεί <code>Apache</code>, <code>Nginx</code> ή <code>Caddy</code>", "installation.issues.server": "To Kirby απαιτεί <code>Apache</code>, <code>Nginx</code> ή <code>Caddy</code>",
"installation.issues.sessions": "Ο φάκελος <code>/site/sessions</code> δεν υπάρχει ή δεν είναι εγγράψιμος", "installation.issues.sessions": "Ο φάκελος <code>/site/sessions</code> δεν υπάρχει ή δεν είναι εγγράψιμος",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "You must add at least one block",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "The email preset \"{name}\" cannot be found", "error.email.preset.notFound": "The email preset \"{name}\" cannot be found",
"error.field.converter.invalid": "Invalid converter \"{converter}\"", "error.field.converter.invalid": "Invalid converter \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "The panel cannot be installed", "installation.issues.headline": "The panel cannot be installed",
"installation.issues.mbstring": "The <code>MB String</code> extension is required", "installation.issues.mbstring": "The <code>MB String</code> extension is required",
"installation.issues.media": "The <code>/media</code> folder does not exist or is not writable", "installation.issues.media": "The <code>/media</code> folder does not exist or is not writable",
"installation.issues.php": "Make sure to use <code>PHP 7+</code>", "installation.issues.php": "Make sure to use <code>PHP 8+</code>",
"installation.issues.server": "Kirby requires <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>", "installation.issues.server": "Kirby requires <code>Apache</code>, <code>Nginx</code> or <code>Caddy</code>",
"installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable", "installation.issues.sessions": "The <code>/site/sessions</code> folder does not exist or is not writable",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Oni devas aldoni almenaŭ unu blokon", "error.blocks.min.singular": "Oni devas aldoni almenaŭ unu blokon",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "La retpoŝta antaŭagordo \"{name}\" ne estas trovebla", "error.email.preset.notFound": "La retpoŝta antaŭagordo \"{name}\" ne estas trovebla",
"error.field.converter.invalid": "Nevalida konvertilo \"{converter}\"", "error.field.converter.invalid": "Nevalida konvertilo \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Ne eblas instali la panelon", "installation.issues.headline": "Ne eblas instali la panelon",
"installation.issues.mbstring": "La kromprogramo <code>MB String</code> estas deviga", "installation.issues.mbstring": "La kromprogramo <code>MB String</code> estas deviga",
"installation.issues.media": "La dosierujo <code>/media</code> ne ekzistas, aũ ne estas skribebla", "installation.issues.media": "La dosierujo <code>/media</code> ne ekzistas, aũ ne estas skribebla",
"installation.issues.php": "Nepre uzu <code>PHP 7+</code>", "installation.issues.php": "Nepre uzu <code>PHP 8+</code>",
"installation.issues.server": "Kirby bezonas <code>Apache</code>, <code>Nginx</code> aŭ <code>Caddy</code>", "installation.issues.server": "Kirby bezonas <code>Apache</code>, <code>Nginx</code> aŭ <code>Caddy</code>",
"installation.issues.sessions": "La dosierujo <code>/site/sessions</code> ne ekzistas, aŭ ne estas skribebla", "installation.issues.sessions": "La dosierujo <code>/site/sessions</code> ne ekzistas, aŭ ne estas skribebla",

View File

@@ -29,7 +29,7 @@
"days.tue": "Mar", "days.tue": "Mar",
"days.wed": "Mi\u00e9", "days.wed": "Mi\u00e9",
"debugging": "Debugging", "debugging": "Depuración",
"delete": "Eliminar", "delete": "Eliminar",
"delete.all": "Eliminar todos", "delete.all": "Eliminar todos",
@@ -49,8 +49,8 @@
"email": "Correo Electrónico", "email": "Correo Electrónico",
"email.placeholder": "correo@ejemplo.com", "email.placeholder": "correo@ejemplo.com",
"entries": "Entries", "entries": "Entradas",
"entry": "Entry", "entry": "Entrada",
"environment": "Ambiente", "environment": "Ambiente",
@@ -70,12 +70,14 @@
"error.blocks.max.singular": "No debes añadir más de un bloque", "error.blocks.max.singular": "No debes añadir más de un bloque",
"error.blocks.min.plural": "Debes añadir al menos {min} bloques ", "error.blocks.min.plural": "Debes añadir al menos {min} bloques ",
"error.blocks.min.singular": "Debes añadir al menos un bloque", "error.blocks.min.singular": "Debes añadir al menos un bloque",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "Hay un error en el campo \"{field}\" del bloque {index} que utiliza el tipo de bloque \"{fieldset}\"",
"error.cache.type.invalid": "Tipo de caché \"{tipo}\" no válido",
"error.email.preset.notFound": "El preajuste de email \"{name}\" no se pudo encontrar.", "error.email.preset.notFound": "El preajuste de email \"{name}\" no se pudo encontrar.",
"error.field.converter.invalid": "Convertidor inválido \"{converter}\"", "error.field.converter.invalid": "Convertidor inválido \"{converter}\"",
"error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist", "error.field.type.missing": "Campo \"{ name }\": El tipo de campo \"{ type }\" no existe",
"error.file.changeName.empty": "El nombre no debe estar vacío", "error.file.changeName.empty": "El nombre no debe estar vacío",
"error.file.changeName.permission": "No tienes permitido cambiar el nombre de \"{filename}\"", "error.file.changeName.permission": "No tienes permitido cambiar el nombre de \"{filename}\"",
@@ -108,14 +110,14 @@
"error.language.name": "Por favor introduce un nombre válido para el idioma", "error.language.name": "Por favor introduce un nombre válido para el idioma",
"error.language.notFound": "No se pudo encontrar el idioma", "error.language.notFound": "No se pudo encontrar el idioma",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}", "error.layout.validation.block": "Hay un error en el campo \"{field}\" del bloque {blockIndex} que utiliza el tipo de bloque \"{fieldset}\" en el layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "Hay un error en los ajustes del layout {index}",
"error.license.format": "Por favor introduce una llave de licencia válida", "error.license.format": "Por favor introduce una llave de licencia válida",
"error.license.email": "Por favor ingresa un correo electrónico valido", "error.license.email": "Por favor ingresa un correo electrónico valido",
"error.license.verification": "La licencia no pude ser verificada", "error.license.verification": "La licencia no pude ser verificada",
"error.object.validation": "Theres an error in the \"{label}\" field:\n{message}", "error.object.validation": "Hay un error en el campo \"{label}\":\n{message}",
"error.offline": "El Panel se encuentra fuera de linea ", "error.offline": "El Panel se encuentra fuera de linea ",
@@ -137,8 +139,8 @@
"error.page.duplicate.permission": "No tienes permitido duplicar \"{slug}\"", "error.page.duplicate.permission": "No tienes permitido duplicar \"{slug}\"",
"error.page.notFound": "La página \"{slug}\" no se encuentra", "error.page.notFound": "La página \"{slug}\" no se encuentra",
"error.page.num.invalid": "Por favor, introduce un número de posición válido. Los números no deben ser negativos.", "error.page.num.invalid": "Por favor, introduce un número de posición válido. Los números no deben ser negativos.",
"error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.invalid": "Por favor, introduce un apéndice de URL válido",
"error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.slug.maxlength": "La longitud del slug debe ser inferior a \"{length}\" caracteres",
"error.page.sort.permission": "La página \"{slug}\" no se puede ordenar", "error.page.sort.permission": "La página \"{slug}\" no se puede ordenar",
"error.page.status.invalid": "Por favor, establece una estado de página válido", "error.page.status.invalid": "Por favor, establece una estado de página válido",
"error.page.undefined": "La p\u00e1gina no fue encontrada", "error.page.undefined": "La p\u00e1gina no fue encontrada",
@@ -163,7 +165,7 @@
"error.template.default.notFound": "La plantilla predeterminada no existe", "error.template.default.notFound": "La plantilla predeterminada no existe",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug", "error.unexpected": "¡Se ha producido un error inesperado! Activa el modo de depuración para obtener más información: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "No tienes permiso para cambiar el email del usuario \"{name}\"", "error.user.changeEmail.permission": "No tienes permiso para cambiar el email del usuario \"{name}\"",
"error.user.changeLanguage.permission": "No tienes permiso para cambiar el idioma del usuario \"{name}\"", "error.user.changeLanguage.permission": "No tienes permiso para cambiar el idioma del usuario \"{name}\"",
@@ -268,47 +270,47 @@
"field.blocks.quote.name": "Cita", "field.blocks.quote.name": "Cita",
"field.blocks.quote.text.label": "Texto", "field.blocks.quote.text.label": "Texto",
"field.blocks.quote.text.placeholder": "Cita...", "field.blocks.quote.text.placeholder": "Cita...",
"field.blocks.quote.citation.label": "Citation", "field.blocks.quote.citation.label": "Cita",
"field.blocks.quote.citation.placeholder": "Por ...", "field.blocks.quote.citation.placeholder": "Por ...",
"field.blocks.text.name": "Texto", "field.blocks.text.name": "Texto",
"field.blocks.text.placeholder": "Text", "field.blocks.text.placeholder": "Texto ...",
"field.blocks.video.caption": "Leyenda", "field.blocks.video.caption": "Leyenda",
"field.blocks.video.name": "Video", "field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL", "field.blocks.video.placeholder": "Introduce la URL de un vídeo",
"field.blocks.video.url.label": "Video-URL", "field.blocks.video.url.label": "Vídeo-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Aún no ha seleccionado ningún archivo", "field.files.empty": "Aún no ha seleccionado ningún archivo",
"field.layout.delete": "Delete layout", "field.layout.delete": "Eliminar layout",
"field.layout.delete.confirm": "Do you really want to delete this layout?", "field.layout.delete.confirm": "¿Realmente quieres eliminar este layout?",
"field.layout.empty": "No rows yet", "field.layout.empty": "Aún no hay filas",
"field.layout.select": "Select a layout", "field.layout.select": "Seleccionar layout",
"field.object.empty": "No information yet", "field.object.empty": "Aún no hay información",
"field.pages.empty": "Aún no ha seleccionado ningúna pagina", "field.pages.empty": "Aún no ha seleccionado ningúna pagina",
"field.structure.delete.confirm": "\u00bfEn realidad desea borrar esta entrada?", "field.structure.delete.confirm": "\u00bfEn realidad desea borrar esta entrada?",
"field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.delete.confirm.all": "¿Realmente quieres eliminar todas las entradas?",
"field.structure.empty": "A\u00fan no existen entradas.", "field.structure.empty": "A\u00fan no existen entradas.",
"field.users.empty": "Aún no ha seleccionado ningún usuario", "field.users.empty": "Aún no ha seleccionado ningún usuario",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>", "file.blueprint": "Este archivo aún no tiene blueprint. Puedes definir la configuración en <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "\u00bfEst\u00e1s seguro que deseas eliminar este archivo?", "file.delete.confirm": "\u00bfEst\u00e1s seguro que deseas eliminar este archivo?",
"file.sort": "Change position", "file.sort": "Cambiar posición",
"files": "Archivos", "files": "Archivos",
"files.empty": "Aún no existen archivos", "files.empty": "Aún no existen archivos",
"hide": "Hide", "hide": "Ocultar",
"hour": "Hora", "hour": "Hora",
"import": "Import", "import": "Importar",
"info": "Info", "info": "Info",
"insert": "Insertar", "insert": "Insertar",
"insert.after": "Insert after", "insert.after": "Insertar después",
"insert.before": "Insert before", "insert.before": "Insertar antes",
"install": "Instalar", "install": "Instalar",
"installation": "Instalación", "installation": "Instalación",
@@ -320,7 +322,7 @@
"installation.issues.headline": "El panel no puede ser instalado.", "installation.issues.headline": "El panel no puede ser instalado.",
"installation.issues.mbstring": "Se requiere la extensión <code>MB String</code>.", "installation.issues.mbstring": "Se requiere la extensión <code>MB String</code>.",
"installation.issues.media": "La carpeta <code>/media</code> no existe o no posee permisos de escritura.", "installation.issues.media": "La carpeta <code>/media</code> no existe o no posee permisos de escritura.",
"installation.issues.php": "Asegurese de estar usando <code>PHP 7+</code>", "installation.issues.php": "Asegurese de estar usando <code>PHP 8+</code>",
"installation.issues.server": "Kirby requiere <code>Apache</code>, <code>Nginx</code>, <code>Caddy</code>", "installation.issues.server": "Kirby requiere <code>Apache</code>, <code>Nginx</code>, <code>Caddy</code>",
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no posee permisos de escritura.", "installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no posee permisos de escritura.",
@@ -348,14 +350,14 @@
"license": "Licencia", "license": "Licencia",
"license.buy": "Comprar una licencia", "license.buy": "Comprar una licencia",
"license.register": "Registrar", "license.register": "Registrar",
"license.manage": "Manage your licenses", "license.manage": "Gestiona tus licencias",
"license.register.help": "Recibió su código de licencia después de la compra por correo electrónico. Por favor copie y pegue para registrarse.", "license.register.help": "Recibió su código de licencia después de la compra por correo electrónico. Por favor copie y pegue para registrarse.",
"license.register.label": "Por favor, ingresa tu código de licencia", "license.register.label": "Por favor, ingresa tu código de licencia",
"license.register.domain": "Your license will be registered to <strong>{host}</strong>.", "license.register.domain": "Tu licencia será registrada para <strong>{host}</strong>.",
"license.register.local": "You are about to register your license for your local domain <strong>{host}</strong>. If this site will be deployed to a public domain, please register it there instead. If {host} is the domain you want to license Kirby to, please continue.", "license.register.local": "Estás a punto de registrar tu licencia para el dominio local {host}. Si este sitio va a ser desplegado en un dominio público, por favor regístralo allí. Si {host} es el dominio en el que quiere registrar Kirby, por favor continúa.",
"license.register.success": "Gracias por apoyar a Kirby", "license.register.success": "Gracias por apoyar a Kirby",
"license.unregistered": "Este es un demo no registrado de Kirby", "license.unregistered": "Este es un demo no registrado de Kirby",
"license.unregistered.label": "Unregistered", "license.unregistered.label": "No registrado",
"link": "Enlace", "link": "Enlace",
"link.text": "Texto de Enlace", "link.text": "Texto de Enlace",
@@ -371,20 +373,20 @@
"lock.isUnlocked": "Tus cambios sin guardar han sido sobrescritos por otro usuario. Puedes descargar los cambios y fusionarlos manualmente.", "lock.isUnlocked": "Tus cambios sin guardar han sido sobrescritos por otro usuario. Puedes descargar los cambios y fusionarlos manualmente.",
"login": "Iniciar sesión", "login": "Iniciar sesión",
"login.code.label.login": "Login code", "login.code.label.login": "Código de inicio de sesión",
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Código de restablecimiento de contraseña",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "Si tu dirección de correo electrónico está registrada, el código solicitado fue enviado por correo electrónico.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hola {user.nameOrEmail},\n\nHas pedido, recientemente, un código de restablecimiento de contraseña para el Panel del sitio {site}.\nEl siguiente código de restablecimiento de contraseña será válido por {timeout} minutos:\n\n{code}\n\nSi no pediste un código de restablecimiento de contraseña, por favor ignora este correo o contacta a tu administrador si tienes dudas.\nPor seguridad, por favor NO reenvíes este correo.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Tu código de inicio de sesión",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hola {user.nameOrEmail},\n\nHas pedido, recientemente, un código de restablecimiento de contraseña para el Panel del sitio {site}.\nEl siguiente código de restablecimiento de contraseña será válido por {timeout} minutos:\n\n{code}\n\nSi no pediste un código de restablecimiento de contraseña, por favor ignora este correo o contacta a tu administrador si tienes dudas.\nPor seguridad, por favor NO reenvíes este correo.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Tu código de restablecimiento de contraseña",
"login.remember": "Mantener mi sesión iniciada", "login.remember": "Mantener mi sesión iniciada",
"login.reset": "Reset password", "login.reset": "Restablecer contraseña",
"login.toggleText.code.email": "Login via email", "login.toggleText.code.email": "Iniciar sesión por correo electrónico",
"login.toggleText.code.email-password": "Login with password", "login.toggleText.code.email-password": "Iniciar sesión con contraseña",
"login.toggleText.password-reset.email": "Forgot your password?", "login.toggleText.password-reset.email": "¿Olvidaste tu contraseña?",
"login.toggleText.password-reset.email-password": "← Back to login", "login.toggleText.password-reset.email-password": "← Volver al inicio de sesión",
"logout": "Cerrar sesi\u00f3n", "logout": "Cerrar sesi\u00f3n",
@@ -414,16 +416,16 @@
"off": "Apagado", "off": "Apagado",
"on": "Encendido", "on": "Encendido",
"open": "Abrir", "open": "Abrir",
"open.newWindow": "Open in new window", "open.newWindow": "Abrir en una ventana nueva",
"options": "Opciones", "options": "Opciones",
"options.none": "No options", "options.none": "Sin opciones",
"orientation": "Orientación", "orientation": "Orientación",
"orientation.landscape": "Paisaje", "orientation.landscape": "Paisaje",
"orientation.portrait": "Retrato", "orientation.portrait": "Retrato",
"orientation.square": "Diapositiva", "orientation.square": "Diapositiva",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>", "page.blueprint": "Este archivo aún no tiene blueprint. Puedes definir la configuración en <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Cambiar URL", "page.changeSlug": "Cambiar URL",
"page.changeSlug.fromTitle": "Crear a partir del t\u00edtulo", "page.changeSlug.fromTitle": "Crear a partir del t\u00edtulo",
"page.changeStatus": "Cambiar estado", "page.changeStatus": "Cambiar estado",
@@ -437,10 +439,10 @@
"page.duplicate.appendix": "Copiar", "page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copiar archivos", "page.duplicate.files": "Copiar archivos",
"page.duplicate.pages": "Copiar páginas", "page.duplicate.pages": "Copiar páginas",
"page.sort": "Change position", "page.sort": "Cambiar posición",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Borrador", "page.status.draft": "Borrador",
"page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", "page.status.draft.description": "La página está en modo borrador y solo es visible para editores conectados o mediante enlace secreto.",
"page.status.listed": "Pública", "page.status.listed": "Pública",
"page.status.listed.description": "La página es pública para cualquiera", "page.status.listed.description": "La página es pública para cualquiera",
"page.status.unlisted": "No publicada", "page.status.unlisted": "No publicada",
@@ -455,19 +457,19 @@
"pagination.page": "Página", "pagination.page": "Página",
"password": "Contrase\u00f1a", "password": "Contrase\u00f1a",
"paste": "Paste", "paste": "Pegar",
"paste.after": "Paste after", "paste.after": "Pegar después",
"pixel": "Pixel", "pixel": "Pixel",
"plugin": "Plugin", "plugin": "Plugin",
"plugins": "Plugins", "plugins": "Plugins",
"prev": "Anterior", "prev": "Anterior",
"preview": "Preview", "preview": "Previsualizar",
"remove": "Eliminar", "remove": "Eliminar",
"rename": "Renombrar", "rename": "Renombrar",
"replace": "Reemplazar", "replace": "Reemplazar",
"retry": "Reintentar", "retry": "Reintentar",
"revert": "Revertir", "revert": "Revertir",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?", "revert.confirm": "¿Realmente quieres <strong>eliminar todos los cambios sin guardar</strong>?",
"role": "Rol", "role": "Rol",
"role.admin.description": "El administrador tiene todos los derechos", "role.admin.description": "El administrador tiene todos los derechos",
@@ -480,42 +482,42 @@
"save": "Guardar", "save": "Guardar",
"search": "Buscar", "search": "Buscar",
"search.min": "Enter {min} characters to search", "search.min": "Introduce {min} caracteres para buscar",
"search.all": "Show all", "search.all": "Mostrar todo",
"search.results.none": "No results", "search.results.none": "Sin resultados",
"section.required": "Esta sección es requerida", "section.required": "Esta sección es requerida",
"security": "Security", "security": "Seguridad",
"select": "Seleccionar", "select": "Seleccionar",
"server": "Server", "server": "Servidor",
"settings": "Ajustes", "settings": "Ajustes",
"show": "Show", "show": "Mostrar",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Este archivo aún no tiene blueprint. Puedes definir la configuración en <strong>/site/blueprints/site.yml</strong>",
"size": "Tamaño", "size": "Tamaño",
"slug": "Apéndice URL", "slug": "Apéndice URL",
"sort": "Ordenar", "sort": "Ordenar",
"stats.empty": "No reports", "stats.empty": "Sin informes",
"system.issues.content": "The content folder seems to be exposed", "system.issues.content": "La carpeta content parece estar expuesta",
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.kirby": "La versión de Kirby que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Tu versión instalada del plugin { plugin } ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
"system.issues.debug": "Debugging must be turned off in production", "system.issues.debug": "La depuración debe estar desactivada en producción",
"system.issues.git": "The .git folder seems to be exposed", "system.issues.git": "La carpeta .git parece estar expuesta",
"system.issues.https": "We recommend HTTPS for all your sites", "system.issues.https": "Recomendamos HTTPS para todos tus sitios web",
"system.issues.kirby": "The kirby folder seems to be exposed", "system.issues.kirby": "La carpeta kirby parece estar expuesta",
"system.issues.site": "The site folder seems to be exposed", "system.issues.site": "La carpeta site parece estar expuesta",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }", "system.issues.vulnerability.kirby": "Tu instalación podría estar afectada por la siguiente vulnerabilidad ({ severity } gravedad): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }", "system.issues.vulnerability.plugin": "Tu instalación podría estar afectada por la siguiente vulnerabilidad en el plugin { plugin } ({ severity } gravedad): { description }",
"system.updateStatus": "Update status", "system.updateStatus": "Estado de actualización",
"system.updateStatus.error": "Could not check for updates", "system.updateStatus.error": "No se ha podido comprobar si hay actualizaciones",
"system.updateStatus.not-vulnerable": "No known vulnerabilities", "system.updateStatus.not-vulnerable": "No hay vulnerabilidades conocidas",
"system.updateStatus.security-update": "Free security update { version } available", "system.updateStatus.security-update": "Actualización gratuita de seguridad { version } disponible",
"system.updateStatus.security-upgrade": "Upgrade { version } with security fixes available", "system.updateStatus.security-upgrade": "Actualización { versión } con correcciones de seguridad disponibles",
"system.updateStatus.unreleased": "Unreleased version", "system.updateStatus.unreleased": "Versión no publicada",
"system.updateStatus.up-to-date": "Up to date", "system.updateStatus.up-to-date": "Actualizado",
"system.updateStatus.update": "Free update { version } available", "system.updateStatus.update": "Actualización gratuita {version} disponible",
"system.updateStatus.upgrade": "Upgrade { version } available", "system.updateStatus.upgrade": "Actualización {versión} disponible",
"title": "Título", "title": "Título",
"template": "Plantilla", "template": "Plantilla",
@@ -536,10 +538,10 @@
"toolbar.button.file.select": "Selecciona un archivo", "toolbar.button.file.select": "Selecciona un archivo",
"toolbar.button.file.upload": "Sube un archivo", "toolbar.button.file.upload": "Sube un archivo",
"toolbar.button.link": "Enlace", "toolbar.button.link": "Enlace",
"toolbar.button.paragraph": "Paragraph", "toolbar.button.paragraph": "Parágrafo",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Tachado",
"toolbar.button.ol": "Lista en orden", "toolbar.button.ol": "Lista en orden",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Subrayado",
"toolbar.button.ul": "Lista de viñetas", "toolbar.button.ul": "Lista de viñetas",
"translation.author": "Equipo Kirby", "translation.author": "Equipo Kirby",
@@ -566,7 +568,7 @@
"url.placeholder": "https://ejemplo.com", "url.placeholder": "https://ejemplo.com",
"user": "Usuario", "user": "Usuario",
"user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>", "user.blueprint": "Puedes definir secciones y campos de formulario adicionales para este rol de usuario en <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Cambiar correo electrónico", "user.changeEmail": "Cambiar correo electrónico",
"user.changeLanguage": "Cambiar idioma", "user.changeLanguage": "Cambiar idioma",
"user.changeName": "Renombrar este usuario", "user.changeName": "Renombrar este usuario",
@@ -582,19 +584,19 @@
"users": "Usuarios", "users": "Usuarios",
"version": "Versión", "version": "Versión",
"version.current": "Current version", "version.current": "Versión actual",
"version.latest": "Latest version", "version.latest": "Última versión",
"versionInformation": "Version information", "versionInformation": "información sobre la versión",
"view.account": "Tu cuenta", "view.account": "Tu cuenta",
"view.installation": "Instalaci\u00f3n", "view.installation": "Instalaci\u00f3n",
"view.languages": "Idiomas", "view.languages": "Idiomas",
"view.resetPassword": "Reset password", "view.resetPassword": "Restablecer contraseña",
"view.site": "Sitio", "view.site": "Sitio",
"view.system": "System", "view.system": "Sistema",
"view.users": "Usuarios", "view.users": "Usuarios",
"welcome": "Bienvenido", "welcome": "Bienvenido",
"year": "Año", "year": "Año",
"yes": "yes" "yes": ""
} }

View File

@@ -1,6 +1,6 @@
{ {
"account.changeName": "Cambia tu nombre", "account.changeName": "Cambiar nombre",
"account.delete": "Borrar tu cuenta", "account.delete": "Borrar cuenta",
"account.delete.confirm": "¿Realmente quieres eliminar tu cuenta? Tu sesión se cerrará inmediatamente. La cuenta no podrá ser recuperada.", "account.delete.confirm": "¿Realmente quieres eliminar tu cuenta? Tu sesión se cerrará inmediatamente. La cuenta no podrá ser recuperada.",
"add": "Añadir", "add": "Añadir",
@@ -29,14 +29,14 @@
"days.tue": "Ma", "days.tue": "Ma",
"days.wed": "Mi", "days.wed": "Mi",
"debugging": "Debugging", "debugging": "Depuración",
"delete": "Borrar", "delete": "Eliminar",
"delete.all": "Eliminar todos", "delete.all": "Eliminar todos",
"dialog.files.empty": "No se ha seleccionado ningún archivo", "dialog.files.empty": "No hay archivos para seleccionar",
"dialog.pages.empty": "No se ha seleccionado ninguna página", "dialog.pages.empty": "No hay páginas para seleccionar",
"dialog.users.empty": "No se ha seleccionado ningún usuario", "dialog.users.empty": "No hay usuarios para seleccionar",
"dimensions": "Dimensiones", "dimensions": "Dimensiones",
"disabled": "Desabilitado", "disabled": "Desabilitado",
@@ -49,19 +49,19 @@
"email": "Correo electrónico", "email": "Correo electrónico",
"email.placeholder": "correo@ejemplo.com", "email.placeholder": "correo@ejemplo.com",
"entries": "Entries", "entries": "Entradas",
"entry": "Entry", "entry": "Entrada",
"environment": "Ambiente", "environment": "Entorno",
"error.access.code": "Código inválido", "error.access.code": "Código inválido",
"error.access.login": "Ingreso inválido", "error.access.login": "Inicio de sesión inválido",
"error.access.panel": "No estás autorizado para acceder al panel", "error.access.panel": "No tienes permiso para acceder al panel",
"error.access.view": "No tienes permiso para acceder a esta parte del panel", "error.access.view": "No tienes permiso para acceder a esta parte del panel",
"error.avatar.create.fail": "No se pudo subir la foto de perfil.", "error.avatar.create.fail": "No se pudo subir la foto de perfil.",
"error.avatar.delete.fail": "No se pudo borrar la foto de perfil", "error.avatar.delete.fail": "No se pudo borrar la foto de perfil",
"error.avatar.dimensions.invalid": "Por favor, mantenga el ancho y la altura de la imagen de perfil debajo de 3000 píxeles", "error.avatar.dimensions.invalid": "Por favor, mantén el ancho y la altura de la imagen de perfil por debajo de 3000 píxeles",
"error.avatar.mime.forbidden": "La imagen del perfil debe ser JPEG o PNG.", "error.avatar.mime.forbidden": "La imagen del perfil debe ser JPEG o PNG.",
"error.blueprint.notFound": "El blueprint \"{name}\" no pudo ser cargado", "error.blueprint.notFound": "El blueprint \"{name}\" no pudo ser cargado",
@@ -70,15 +70,17 @@
"error.blocks.max.singular": "No debes añadir más de un bloque", "error.blocks.max.singular": "No debes añadir más de un bloque",
"error.blocks.min.plural": "Debes añadir al menos {min} bloques ", "error.blocks.min.plural": "Debes añadir al menos {min} bloques ",
"error.blocks.min.singular": "Debes añadir al menos un bloque", "error.blocks.min.singular": "Debes añadir al menos un bloque",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "Hay un error en el campo \"{field}\" del bloque {index} que utiliza el tipo de bloque \"{fieldset}\"",
"error.email.preset.notFound": "El preset del correo \"{name}\" no pudo ser encontrado", "error.cache.type.invalid": "Tipo de caché inválido \"{tipo}\"",
"error.email.preset.notFound": "El preset del correo \"{name}\" no puede ser encontrado",
"error.field.converter.invalid": "Convertidor \"{converter}\" inválido", "error.field.converter.invalid": "Convertidor \"{converter}\" inválido",
"error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist", "error.field.type.missing": "Campo \"{ name }\": El tipo de campo \"{ type }\" no existe",
"error.file.changeName.empty": "El nombre no debe estar vacío", "error.file.changeName.empty": "El nombre no debe estar vacío",
"error.file.changeName.permission": "No tienes permitido cambiar el nombre de \"{filename}\"", "error.file.changeName.permission": "No tienes permiso para cambiar el nombre de \"{filename}\"",
"error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\"", "error.file.duplicate": "Ya existe un archivo con el nombre \"{filename}\"",
"error.file.extension.forbidden": "La extensión \"{extension}\" no está permitida", "error.file.extension.forbidden": "La extensión \"{extension}\" no está permitida",
"error.file.extension.invalid": "Extensión inválida: {extension}", "error.file.extension.invalid": "Extensión inválida: {extension}",
@@ -89,68 +91,68 @@
"error.file.mime.differs": "El archivo cargado debe ser del mismo tipo mime \"{mime}\"", "error.file.mime.differs": "El archivo cargado debe ser del mismo tipo mime \"{mime}\"",
"error.file.mime.forbidden": "Los medios tipo \"{mime}\" no están permitidos", "error.file.mime.forbidden": "Los medios tipo \"{mime}\" no están permitidos",
"error.file.mime.invalid": "Tipo invalido de mime: {mime}", "error.file.mime.invalid": "Tipo invalido de mime: {mime}",
"error.file.mime.missing": "El tipo de medio para \"{filename}\" no pudo ser detectado", "error.file.mime.missing": "El tipo de medio para \"{filename}\" no puede ser detectado",
"error.file.minheight": "La altura de la imagen debe ser de al menos {height} pixeles", "error.file.minheight": "La altura de la imagen debe ser de al menos {height} pixeles",
"error.file.minsize": "El archivo es muy pequeño", "error.file.minsize": "El archivo es muy pequeño",
"error.file.minwidth": "El ancho de la imagen debe ser de al menos {width} pixeles", "error.file.minwidth": "El ancho de la imagen debe ser de al menos {width} pixeles",
"error.file.name.missing": "El nombre de archivo no debe estar vacío", "error.file.name.missing": "El nombre de archivo no debe estar vacío",
"error.file.notFound": "El archivo \"{filename}\" no pudo ser encontrado", "error.file.notFound": "El archivo \"{filename}\" no puede ser encontrado",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"", "error.file.orientation": "La orientación de la imagen debe ser \"{orientation}",
"error.file.type.forbidden": "No está permitido subir archivos {type}", "error.file.type.forbidden": "No tienes permiso para subir archivos {type}",
"error.file.type.invalid": "Tipo de archivo inválido: {type}", "error.file.type.invalid": "Tipo de archivo inválido: {type}",
"error.file.undefined": "El archivo no pudo ser encontrado", "error.file.undefined": "El archivo no puede ser encontrado",
"error.form.incomplete": "Por favor, corrija todos los errores del formulario…", "error.form.incomplete": "Por favor, corrige todos los errores del formulario…",
"error.form.notSaved": "El formulario no pudo ser guardado", "error.form.notSaved": "El formulario no pudo ser guardado",
"error.language.code": "Por favor introduce un código válido para el idioma", "error.language.code": "Por favor, introduce un código válido para el idioma",
"error.language.duplicate": "El idioma ya existe", "error.language.duplicate": "El idioma ya existe",
"error.language.name": "Por favor introduce un nombre válido para el idioma", "error.language.name": "Por favor, introduce un nombre válido para el idioma",
"error.language.notFound": "No se pudo encontrar el idioma", "error.language.notFound": "No se pudo encontrar el idioma",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}", "error.layout.validation.block": "Hay un error en el campo \"{field}\" del bloque {blockIndex} que utiliza el tipo de bloque \"{fieldset}\" en el layout {layoutIndex}",
"error.layout.validation.settings": "There's an error in layout {index} settings", "error.layout.validation.settings": "Hay un error en los ajustes del layout {index}",
"error.license.format": "Por favor introduce una llave de licencia válida", "error.license.format": "Por favor, introduce una llave de licencia válida",
"error.license.email": "Por favor, introduce un correo electrónico válido", "error.license.email": "Por favor, introduce un correo electrónico válido",
"error.license.verification": "La licencia no pude ser verificada", "error.license.verification": "La licencia no pudo ser verificada",
"error.object.validation": "Theres an error in the \"{label}\" field:\n{message}", "error.object.validation": "Hay un error en el campo \"{label}\":\n{message}",
"error.offline": "El Panel se encuentra fuera de linea ", "error.offline": "El Panel se encuentra actualmente fuera de línea ",
"error.page.changeSlug.permission": "No está permitido cambiar el apéndice de URL para \"{slug}\"", "error.page.changeSlug.permission": "No tienes permiso para cambiar el apéndice de URL para \"{slug}\"",
"error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.", "error.page.changeStatus.incomplete": "La página tiene errores y no puede ser publicada.",
"error.page.changeStatus.permission": "El estado de esta página no se puede cambiar", "error.page.changeStatus.permission": "El estado de esta página no se puede cambiar",
"error.page.changeStatus.toDraft.invalid": "La página \"{slug}\" no se puede convertir a borrador", "error.page.changeStatus.toDraft.invalid": "La página \"{slug}\" no se puede convertir a borrador",
"error.page.changeTemplate.invalid": "La plantilla para la página \"{slug}\" no se puede cambiar", "error.page.changeTemplate.invalid": "La plantilla para la página \"{slug}\" no se puede cambiar",
"error.page.changeTemplate.permission": "No tienes permitido cambiar la plantilla para \"{slug}\"", "error.page.changeTemplate.permission": "No tienes permiso para cambiar la plantilla para \"{slug}\"",
"error.page.changeTitle.empty": "El título no debe estar vacío.", "error.page.changeTitle.empty": "El título no debe estar vacío.",
"error.page.changeTitle.permission": "No tienes permitido cambiar el título por \"{slug}\"", "error.page.changeTitle.permission": "No tienes permiso para cambiar el título por \"{slug}\"",
"error.page.create.permission": "No tienes permitido crear \"{slug}\"", "error.page.create.permission": "No tienes permiso para crear \"{slug}\"",
"error.page.delete": "La página \"{slug}\" no puede ser eliminada", "error.page.delete": "La página \"{slug}\" no se puede eliminar",
"error.page.delete.confirm": "Por favor, introduzca el título de la página para confirmar", "error.page.delete.confirm": "Por favor, introduce el título de la página para confirmar",
"error.page.delete.hasChildren": "La página tiene subpáginas y no se puede eliminar", "error.page.delete.hasChildren": "La página tiene subpáginas y no se puede eliminar",
"error.page.delete.permission": "No tienes permiso de eliminar \"{slug}\"", "error.page.delete.permission": "No tienes permiso para eliminar \"{slug}\"",
"error.page.draft.duplicate": "Un borrador de página con el apéndice de URL \"{slug}\" ya existe", "error.page.draft.duplicate": "Un borrador de página con el apéndice de URL \"{slug}\" ya existe",
"error.page.duplicate": "Una página con el apéndice de URL. \"{slug}\" ya existe", "error.page.duplicate": "Una página con el apéndice de URL \"{slug}\" ya existe",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"", "error.page.duplicate.permission": "No tienes permiso para duplicar \"{slug}\"",
"error.page.notFound": "La página \"{slug}\" no puede ser encontrada", "error.page.notFound": "No se puede encontrar la página \"{slug}\"",
"error.page.num.invalid": "Por favor, introduzca un número válido. Estos no deben ser negativos.", "error.page.num.invalid": "Por favor, introduce un número de ordenación válido. Los números no deben ser negativos.",
"error.page.slug.invalid": "Please enter a valid URL appendix", "error.page.slug.invalid": "Por favor, introduce un apéndice de URL válido",
"error.page.slug.maxlength": "Slug length must be less than \"{length}\" characters", "error.page.slug.maxlength": "La longitud del slug debe ser inferior a \"{length}\" caracteres",
"error.page.sort.permission": "La página \"{slug}\" no se puede ordenar", "error.page.sort.permission": "No se puede encontrar la página \"{slug}\"",
"error.page.status.invalid": "Por favor, establezca un estado de página válido", "error.page.status.invalid": "Por favor, establece un estado de página válido",
"error.page.undefined": "La página no se puede encontrar", "error.page.undefined": "No se puede encontrar la página",
"error.page.update.permission": "No tienes permitido actualizar \"{slug}\"", "error.page.update.permission": "No tienes permiso para actualizar \"{slug}\"",
"error.section.files.max.plural": "No debes agregar más de {max} archivos a la sección \"{section}\"", "error.section.files.max.plural": "No debes agregar más de {max} archivos a la sección \"{section}\"",
"error.section.files.max.singular": "No debes agregar más de 1 archivo a la sección \"{section}\"", "error.section.files.max.singular": "No debes agregar más de 1 archivo a la sección \"{section}\"",
"error.section.files.min.plural": "La sección \"{section}\" requiere al menos {min} archivos", "error.section.files.min.plural": "La sección \"{section}\" requiere al menos {min} archivos",
"error.section.files.min.singular": "La sección \"{section}\" requiere al menos un archivo", "error.section.files.min.singular": "La sección \"{section}\" requiere al menos un archivo",
"error.section.pages.max.plural": "No debe agregar más de {max} páginas a la sección \"{section}\"", "error.section.pages.max.plural": "No debes agregar más de {max} páginas a la sección \"{section}\"",
"error.section.pages.max.singular": "No debe agregar más de una página a la sección \"{section}\"", "error.section.pages.max.singular": "No debes agregar más de una página a la sección \"{section}\"",
"error.section.pages.min.plural": "La sección \"{section}\" requiere al menos {min} páginas", "error.section.pages.min.plural": "La sección \"{section}\" requiere al menos {min} páginas",
"error.section.pages.min.singular": "La sección \"{section}\" requiere al menos una página", "error.section.pages.min.singular": "La sección \"{section}\" requiere al menos una página",
@@ -158,94 +160,94 @@
"error.section.type.invalid": "El sección tipo \"{tipo}\" no es válido", "error.section.type.invalid": "El sección tipo \"{tipo}\" no es válido",
"error.site.changeTitle.empty": "El título no debe estar vacío.", "error.site.changeTitle.empty": "El título no debe estar vacío.",
"error.site.changeTitle.permission": "No está permitido cambiar el título del sitio", "error.site.changeTitle.permission": "No tienes permiso para cambiar el título del sitio",
"error.site.update.permission": "No tienes permitido actualizar el sitio", "error.site.update.permission": "No tienes permiso para actualizar el sitio",
"error.template.default.notFound": "La plantilla por defecto no existe", "error.template.default.notFound": "La plantilla por defecto no existe",
"error.unexpected": "An unexpected error occurred! Enable debug mode for more info: https://getkirby.com/docs/reference/system/options/debug", "error.unexpected": "¡Se ha producido un error inesperado! Activa el modo de depuración para obtener más información: https://getkirby.com/docs/reference/system/options/debug",
"error.user.changeEmail.permission": "No tienes permitido cambiar el correo electrónico para el usuario \"{name}\"", "error.user.changeEmail.permission": "No tienes permiso para cambiar el correo electrónico para el usuario \"{name}\"",
"error.user.changeLanguage.permission": "No tienes permitido cambiar el idioma para el usuario \"{name}\"", "error.user.changeLanguage.permission": "No tienes permiso para cambiar el idioma para el usuario \"{name}\"",
"error.user.changeName.permission": "No tienes permitido cambiar el nombre del usuario \"{name}\"", "error.user.changeName.permission": "No tienes permiso para cambiar el nombre del usuario \"{name}\"",
"error.user.changePassword.permission": "No tienes permitido cambiar la contraseña del usuario \"{name}\"", "error.user.changePassword.permission": "No tienes permiso para cambiar la contraseña del usuario \"{name}\"",
"error.user.changeRole.lastAdmin": "El rol para el último administrador no puede ser cambiado", "error.user.changeRole.lastAdmin": "No se puede cambiar el rol del último administrador",
"error.user.changeRole.permission": "No tienes permitido cambiar el rol del usuario \"{name}\"", "error.user.changeRole.permission": "No tienes permiso para cambiar el rol del usuario \"{name}\"",
"error.user.changeRole.toAdmin": "No tienes permitido promover a alguien al rol de admin", "error.user.changeRole.toAdmin": "No tienes permiso para promover a alguien al rol de admin",
"error.user.create.permission": "No tienes permiso para crear este usuario", "error.user.create.permission": "No tienes permiso para crear este usuario",
"error.user.delete": "El usuario \"{name}\" no puede ser eliminado", "error.user.delete": "No se puede eliminar el usuario \"{name}\"",
"error.user.delete.lastAdmin": "El último administrador no puede ser eliminado", "error.user.delete.lastAdmin": "No se puede eliminar el último admin",
"error.user.delete.lastUser": "El último usuario no puede ser eliminado", "error.user.delete.lastUser": "No se puede eliminar el último usuario ",
"error.user.delete.permission": "No tienes permitido eliminar el usuario \"{name}\"", "error.user.delete.permission": "No tienes permiso para eliminar el usuario \"{name}\"",
"error.user.duplicate": "Un usuario con la dirección de correo electrónico \"{email}\" ya existe", "error.user.duplicate": "Un usuario con la dirección de correo electrónico \"{email}\" ya existe",
"error.user.email.invalid": "Por favor, introduce una dirección de correo electrónico válida", "error.user.email.invalid": "Por favor, introduce una dirección de correo electrónico válida",
"error.user.language.invalid": "Por favor ingrese un idioma válido", "error.user.language.invalid": "Por favor, introduce un idioma válido",
"error.user.notFound": "El usuario \"{name}\" no pudo ser encontrado", "error.user.notFound": "No se puede encontrar el usuario \"{name}\"",
"error.user.password.invalid": "Por favor introduce una contraseña válida. Las contraseñas deben tener al menos 8 caracteres de largo.", "error.user.password.invalid": "Por favor, introduce una contraseña válida. Las contraseñas deben tener al menos 8 caracteres de largo.",
"error.user.password.notSame": "Las contraseñas no coinciden", "error.user.password.notSame": "Las contraseñas no coinciden",
"error.user.password.undefined": "El usuario no tiene contraseña", "error.user.password.undefined": "El usuario no tiene contraseña",
"error.user.password.wrong": "Contraseña incorrecta", "error.user.password.wrong": "Contraseña incorrecta",
"error.user.role.invalid": "Por favor ingrese un rol válido", "error.user.role.invalid": "Por favor, introduce un rol válido",
"error.user.undefined": "El usuario no puede ser encontrado", "error.user.undefined": "No se puede encontrar el usuario",
"error.user.update.permission": "No tienes permitido actualizar al usuario \"{name}\"", "error.user.update.permission": "No tienes permiso para actualizar el usuario \"{name}\"",
"error.validation.accepted": "Por favor, confirma", "error.validation.accepted": "Por favor, confirma",
"error.validation.alpha": "Por favor solo ingresa caracteres entre a-z", "error.validation.alpha": "Por favor, introduce solo caracteres entre a-z",
"error.validation.alphanum": "Por favor solo ingrese caracteres entre a-z o numerales 0-9", "error.validation.alphanum": "Por favor, introduce solo caracteres entre a-z o numerales 0-9",
"error.validation.between": "Por favor, introduzca un valor entre \"{min}\" y \"{max}\"", "error.validation.between": "Por favor, introduce un valor entre \"{min}\" y \"{max}\"",
"error.validation.boolean": "Por favor confirme o rechace", "error.validation.boolean": "Por favor, confirma o rechaza",
"error.validation.contains": "Por favor ingrese un valor que contenga \"{needle}\"", "error.validation.contains": "Por favor, introduce un valor que contenga \"{needle}\"",
"error.validation.date": "Por favor introduzca una fecha valida", "error.validation.date": "Por favor, introduce una fecha válida",
"error.validation.date.after": "Por favor introduce una fecha posterior a {date}", "error.validation.date.after": "Por favor, introduce una fecha posterior a {date}",
"error.validation.date.before": "Por favor introduce una fecha anterior a {date}", "error.validation.date.before": "Por favor, introduce una fecha anterior a {date}",
"error.validation.date.between": "Por favor introduce un número entre {min} y {max}", "error.validation.date.between": "Por favor, introduce un número entre {min} y {max}",
"error.validation.denied": "Por favor, rechace", "error.validation.denied": "Por favor, rechaza",
"error.validation.different": "El valor no debe ser \"{other}\"", "error.validation.different": "El valor no debe ser \"{other}\"",
"error.validation.email": "Por favor, introduce un correo electrónico válido", "error.validation.email": "Por favor, introduce un correo electrónico válido",
"error.validation.endswith": "El valor debe terminar con \"{end}\"", "error.validation.endswith": "El valor debe terminar con \"{end}\"",
"error.validation.filename": "Por favor ingrese un nombre de archivo válido", "error.validation.filename": "Por favor, introduce un nombre de archivo válido",
"error.validation.in": "Por favor ingrese uno de los siguientes: ({in})", "error.validation.in": "Por favor, introduce uno de los siguientes: ({in})",
"error.validation.integer": "Por favor, introduce un numero integro válido", "error.validation.integer": "Por favor, introduce un numero integro válido",
"error.validation.ip": "Por favor ingrese una dirección IP válida", "error.validation.ip": "Por favor, introduce una dirección IP válida",
"error.validation.less": "Por favor, introduzca un valor inferior a {max}", "error.validation.less": "Por favor, introduce un valor inferior a {max}",
"error.validation.match": "El valor no coincide con el patrón esperado", "error.validation.match": "El valor no coincide con el patrón esperado",
"error.validation.max": "Por favor, introduzca un valor igual o inferior a {max}", "error.validation.max": "Por favor, introduce un valor igual o inferior a {max}",
"error.validation.maxlength": "Por favor, introduzca un valor más corto. (max. {max} caracteres)", "error.validation.maxlength": "Por favor, introduce un valor más corto. (max. {max} caracteres)",
"error.validation.maxwords": "Por favor ingrese no más de {max} palabra(s)", "error.validation.maxwords": "Por favor, introduce no más de {max} palabra(s)",
"error.validation.min": "Por favor, introduzca un valor igual o mayor a {min}", "error.validation.min": "Por favor, introduce un valor igual o mayor a {min}",
"error.validation.minlength": "Por favor, introduzca un valor más largo. (min. {min} caracteres)", "error.validation.minlength": "Por favor, introduce un valor más largo. (min. {min} caracteres)",
"error.validation.minwords": "Por favor ingrese al menos {min} palabra(s)", "error.validation.minwords": "Por favor, introduce al menos {min} palabra(s)",
"error.validation.more": "Por favor, introduzca un valor mayor a {min}", "error.validation.more": "Por favor, introduce un valor mayor a {min}",
"error.validation.notcontains": "Por favor ingrese un valor que no contenga \"{needle}\"", "error.validation.notcontains": "Por favor, introduce un valor que no contenga \"{needle}\"",
"error.validation.notin": "Por favor, no ingrese ninguno de los siguientes: ({notIn})", "error.validation.notin": "Por favor, no introduzcas ninguno de los siguientes: ({notIn})",
"error.validation.option": "Por favor seleccione una opción válida", "error.validation.option": "Por favor, selecciona una opción válida",
"error.validation.num": "Por favor ingrese un número valido", "error.validation.num": "Por favor, introduce un número valido",
"error.validation.required": "Por favor ingrese algo", "error.validation.required": "Por favor, introduce algo",
"error.validation.same": "Por favor escribe \"{other}\"", "error.validation.same": "Por favor, introduce \"{other}\"",
"error.validation.size": "El tamaño del valor debe ser \"{size}\"", "error.validation.size": "El tamaño del valor debe ser \"{size}\"",
"error.validation.startswith": "El valor debe comenzar con \"{start}\"", "error.validation.startswith": "El valor debe comenzar con \"{start}\"",
"error.validation.time": "Por favor ingrese una hora válida", "error.validation.time": "Por favor, introduce una hora válida",
"error.validation.time.after": "Por favor ingresa una fecha después de {time}", "error.validation.time.after": "Por favor, introduce una fecha después de {time}",
"error.validation.time.before": "Por favor ingresa una fecha antes de {time}", "error.validation.time.before": "Por favor, introduce una fecha antes de {time}",
"error.validation.time.between": "Por favor ingresa un fecha entre {min} y {max}", "error.validation.time.between": "Por favor, introduce un fecha entre {min} y {max}",
"error.validation.url": "Por favor introduzca un URL válido", "error.validation.url": "Por favor, introduce un URL válido",
"expand": "Expandir", "expand": "Expandir",
"expand.all": "Expandir todo", "expand.all": "Expandir todo",
"field.required": "Este campo es requerido", "field.required": "Este campo es obligatorio",
"field.blocks.changeType": "Cambiar tipo", "field.blocks.changeType": "Cambiar tipo",
"field.blocks.code.name": "Código", "field.blocks.code.name": "Código",
"field.blocks.code.language": "Idioma", "field.blocks.code.language": "Idioma",
"field.blocks.code.placeholder": "Tu código...", "field.blocks.code.placeholder": "Tu código...",
"field.blocks.delete.confirm": "¿Seguro que quieres eliminar este bloque?", "field.blocks.delete.confirm": "¿Realmente quieres eliminar este bloque?",
"field.blocks.delete.confirm.all": "¿Seguro que quieres eliminar todos los bloques?", "field.blocks.delete.confirm.all": "¿Realmente quieres eliminar todos los bloques?",
"field.blocks.delete.confirm.selected": "¿Seguro que quieres eliminar los bloques seleccionados?", "field.blocks.delete.confirm.selected": "¿Realmente quieres eliminar los bloques seleccionados?",
"field.blocks.empty": "No hay bloques aún", "field.blocks.empty": "Aún no hay bloques",
"field.blocks.fieldsets.label": "Por favor selecciona un tipo de bloque...", "field.blocks.fieldsets.label": "Por favor, selecciona un tipo de bloque...",
"field.blocks.fieldsets.paste": "Presiona <kbd>{{ shortcut }}</kbd>para pegar/importar bloques en tu portapapeles ", "field.blocks.fieldsets.paste": "Presiona <kbd>{{ shortcut }}</kbd>para pegar/importar bloques en tu portapapeles ",
"field.blocks.gallery.name": "Galería", "field.blocks.gallery.name": "Galería",
"field.blocks.gallery.images.empty": "No hay imágenes aún", "field.blocks.gallery.images.empty": "Aún no hay imágenes",
"field.blocks.gallery.images.label": "Imágenes", "field.blocks.gallery.images.label": "Imágenes",
"field.blocks.heading.level": "Nivel", "field.blocks.heading.level": "Nivel",
"field.blocks.heading.name": "Encabezado", "field.blocks.heading.name": "Encabezado",
@@ -268,94 +270,94 @@
"field.blocks.quote.name": "Cita", "field.blocks.quote.name": "Cita",
"field.blocks.quote.text.label": "Texto", "field.blocks.quote.text.label": "Texto",
"field.blocks.quote.text.placeholder": "Cita...", "field.blocks.quote.text.placeholder": "Cita...",
"field.blocks.quote.citation.label": "Citation", "field.blocks.quote.citation.label": "Cita",
"field.blocks.quote.citation.placeholder": "Por ...", "field.blocks.quote.citation.placeholder": "Por ...",
"field.blocks.text.name": "Texto", "field.blocks.text.name": "Texto",
"field.blocks.text.placeholder": "Text", "field.blocks.text.placeholder": "Texto ...",
"field.blocks.video.caption": "Leyenda", "field.blocks.video.caption": "Leyenda",
"field.blocks.video.name": "Video", "field.blocks.video.name": "Video",
"field.blocks.video.placeholder": "Enter a video URL", "field.blocks.video.placeholder": "Introduce la URL de un vídeo",
"field.blocks.video.url.label": "Video-URL", "field.blocks.video.url.label": "Vídeo-URL",
"field.blocks.video.url.placeholder": "https://youtube.com/?v=", "field.blocks.video.url.placeholder": "https://youtube.com/?v=",
"field.files.empty": "Aún no hay archivos seleccionados", "field.files.empty": "Aún no hay archivos seleccionados",
"field.layout.delete": "Delete layout", "field.layout.delete": "Eliminar layout",
"field.layout.delete.confirm": "Do you really want to delete this layout?", "field.layout.delete.confirm": "¿Realmente quieres eliminar este layout?",
"field.layout.empty": "No rows yet", "field.layout.empty": "Aún no hay filas",
"field.layout.select": "Select a layout", "field.layout.select": "Seleccionar layout",
"field.object.empty": "No information yet", "field.object.empty": "Aún no hay información",
"field.pages.empty": "Aún no hay páginas seleccionadas", "field.pages.empty": "Aún no hay páginas seleccionadas",
"field.structure.delete.confirm": "¿Realmente quieres eliminar esta fila?", "field.structure.delete.confirm": "¿Realmente quieres eliminar esta fila?",
"field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.delete.confirm.all": "¿Realmente quieres eliminar todas las entradas?",
"field.structure.empty": "Aún no hay entradas", "field.structure.empty": "Aún no hay entradas",
"field.users.empty": "Aún no hay usuarios seleccionados", "field.users.empty": "Aún no hay usuarios seleccionados",
"file.blueprint": "This file has no blueprint yet. You can define the setup in <strong>/site/blueprints/files/{blueprint}.yml</strong>", "file.blueprint": "Este archivo aún no tiene blueprint. Puedes definir la configuración en <strong>/site/blueprints/files/{blueprint}.yml</strong>",
"file.delete.confirm": "¿Realmente quieres eliminar <br><strong>{filename}</strong>?", "file.delete.confirm": "¿Realmente quieres eliminar <br><strong>{filename}</strong>?",
"file.sort": "Change position", "file.sort": "Cambiar posición",
"files": "Archivos", "files": "Archivos",
"files.empty": "Aún no hay archivos", "files.empty": "Aún no hay archivos",
"hide": "Hide", "hide": "Ocultar",
"hour": "Hora", "hour": "Hora",
"import": "Import", "import": "Importar",
"info": "Info", "info": "Info",
"insert": "Insertar", "insert": "Insertar",
"insert.after": "Insert after", "insert.after": "Insertar después",
"insert.before": "Insert before", "insert.before": "Insertar antes",
"install": "Instalar", "install": "Instalar",
"installation": "Instalación", "installation": "Instalación",
"installation.completed": "El panel ha sido instalado", "installation.completed": "El panel ha sido instalado",
"installation.disabled": "El instalador del panel está deshabilitado en servidores públicos por defecto. Ejecute el instalador en una máquina local o habilítelo con la opción <code>panel.install</code>.", "installation.disabled": "El instalador del panel está deshabilitado en servidores públicos por defecto. Por favor, ejecuta el instalador en una máquina local o habilítalo con la opción <code>panel.install</code>.",
"installation.issues.accounts": "La carpeta <code>/site/accounts</code> no existe o no se puede escribir", "installation.issues.accounts": "La carpeta <code>/site/accounts</code> no existe o no se puede escribir",
"installation.issues.content": "La carpeta <code>/content</code> no existe o no se puede escribir", "installation.issues.content": "La carpeta <code>/content</code> no existe o no se puede escribir",
"installation.issues.curl": "La extensión <code>CURL</code> es requerida", "installation.issues.curl": "La extensión <code>CURL</code> es requerida",
"installation.issues.headline": "No se pudo instalar el panel", "installation.issues.headline": "No se puede instalar el panel",
"installation.issues.mbstring": "La extension <code>MB String</code> es requerida", "installation.issues.mbstring": "La extension <code>MB String</code> es requerida",
"installation.issues.media": "La carpeta <code>/media</code> no existe o no se puede escribir", "installation.issues.media": "La carpeta <code>/media</code> no existe o no se puede escribir",
"installation.issues.php": "Asegúrate de usar <code>PHP 7+</code>", "installation.issues.php": "Asegurese de estar usando <code>PHP 8+</code>",
"installation.issues.server": "Kirby requiere <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>", "installation.issues.server": "Kirby requiere <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
"installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no se puede escribir", "installation.issues.sessions": "La carpeta <code>/site/sessions</code> no existe o no se puede escribir",
"language": "Idioma", "language": "Idioma",
"language.code": "Código", "language.code": "Código",
"language.convert": "Hacer por defecto", "language.convert": "Hacer por defecto",
"language.convert.confirm": "<p¿Realmente quieres convertir <strong>{name}</strong> al idioma por defecto? Esto no se puede deshacer.</p><p>Si <strong>{name}</strong> tiene contenido sin traducir, ya no habrá un respaldo válido y algunas partes de su sitio podrían estar vacías.</p>", "language.convert.confirm": "<p>¿Realmente quieres convertir <strong>{name}</strong> al idioma por defecto? Esto no se puede deshacer.</p><p>Si <strong>{name}</strong> tiene contenido sin traducir, ya no habrá un respaldo válido y algunas partes de tu sitio podrían estar vacías.</p>",
"language.create": "Añadir un nuevo idioma", "language.create": "Añadir un nuevo idioma",
"language.delete.confirm": "¿De verdad quieres eliminar el idioma <strong>{name}</strong> incluyendo todas las traducciones? ¡Esto no se puede deshacer!", "language.delete.confirm": "¿Realmente quieres eliminar el idioma <strong>{name}</strong> incluyendo todas las traducciones? ¡Esto no se puede deshacer!",
"language.deleted": "El idioma ha sido eliminado", "language.deleted": "El idioma ha sido eliminado",
"language.direction": "Leyendo dirección", "language.direction": "Leyendo dirección",
"language.direction.ltr": "De izquierda a derecha", "language.direction.ltr": "De izquierda a derecha",
"language.direction.rtl": "De derecha a izquierda", "language.direction.rtl": "De derecha a izquierda",
"language.locale": "PHP locale string", "language.locale": "PHP locale string",
"language.locale.warning": "Estas utilizando un configuración local. Por favor modifícalo en el archivo del lenguaje en /site/languages", "language.locale.warning": "Estás utilizando una configuración local. Por favor, modifícalo en el archivo del lenguaje en /site/languages",
"language.name": "Nombre", "language.name": "Nombre",
"language.updated": "El idioma ha sido actualizado", "language.updated": "El idioma ha sido actualizado",
"languages": "Idiomas", "languages": "Idiomas",
"languages.default": "Idioma predeterminado", "languages.default": "Idioma predeterminado",
"languages.empty": "Todavía no hay idiomas", "languages.empty": "Aún no hay idiomas",
"languages.secondary": "Idiomas secundarios", "languages.secondary": "Idiomas secundarios",
"languages.secondary.empty": "Todavía no hay idiomas secundarios", "languages.secondary.empty": "Aún no hay idiomas secundarios",
"license": "Licencia", "license": "Licencia",
"license.buy": "Comprar una licencia", "license.buy": "Comprar una licencia",
"license.register": "Registro", "license.register": "Registro",
"license.manage": "Manage your licenses", "license.manage": "Gestiona licencias",
"license.register.help": "Recibió su código de licencia después de la compra por correo electrónico. Por favor copie y pegue para registrarse.", "license.register.help": "Recibiste tu código de licencia tras la compra por correo electrónico. Por favor, copia y pega para registrarte.",
"license.register.label": "Por favor ingrese su código de licencia", "license.register.label": "Por favor, introduce tu código de licencia",
"license.register.domain": "Your license will be registered to <strong>{host}</strong>.", "license.register.domain": "Tu licencia será registrada para <strong>{host}</strong>.",
"license.register.local": "You are about to register your license for your local domain <strong>{host}</strong>. If this site will be deployed to a public domain, please register it there instead. If {host} is the domain you want to license Kirby to, please continue.", "license.register.local": "Estás a punto de registrar tu licencia para el dominio local <strong>{host}</strong>. Si este sitio va a ser desplegado en un dominio público, por favor regístralo allí. Si {host} es el dominio en el que quiere registrar Kirby, por favor continúa.",
"license.register.success": "Gracias por apoyar a Kirby", "license.register.success": "Gracias por apoyar a Kirby",
"license.unregistered": "Esta es una demo no registrada de Kirby", "license.unregistered": "Esta es una demo no registrada de Kirby",
"license.unregistered.label": "Unregistered", "license.unregistered.label": "No registrado",
"link": "Enlace", "link": "Enlace",
"link.text": "Texto del enlace", "link.text": "Texto del enlace",
@@ -371,20 +373,20 @@
"lock.isUnlocked": "Tus cambios sin guardar han sido sobrescritos por otro usuario. Puedes descargar los cambios y fusionarlos manualmente.", "lock.isUnlocked": "Tus cambios sin guardar han sido sobrescritos por otro usuario. Puedes descargar los cambios y fusionarlos manualmente.",
"login": "Iniciar sesión", "login": "Iniciar sesión",
"login.code.label.login": "Login code", "login.code.label.login": "Código de inicio de sesión",
"login.code.label.password-reset": "Password reset code", "login.code.label.password-reset": "Código de restablecimiento de contraseña",
"login.code.placeholder.email": "000 000", "login.code.placeholder.email": "000 000",
"login.code.text.email": "If your email address is registered, the requested code was sent via email.", "login.code.text.email": "Si tu dirección de correo electrónico está registrada, el código solicitado fue enviado por correo electrónico.",
"login.email.login.body": "Hi {user.nameOrEmail},\n\nYou recently requested a login code for the Panel of {site}.\nThe following login code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a login code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.login.body": "Hola {user.nameOrEmail},\n\nHas pedido, recientemente, un código de restablecimiento de contraseña para el Panel del sitio {site}.\nEl siguiente código de restablecimiento de contraseña será válido por {timeout} minutos:\n\n{code}\n\nSi no pediste un código de restablecimiento de contraseña, por favor ignora este correo o contacta a tu administrador si tienes dudas.\nPor seguridad, por favor NO reenvíes este correo.",
"login.email.login.subject": "Your login code", "login.email.login.subject": "Tu código de inicio de sesión",
"login.email.password-reset.body": "Hi {user.nameOrEmail},\n\nYou recently requested a password reset code for the Panel of {site}.\nThe following password reset code will be valid for {timeout} minutes:\n\n{code}\n\nIf you did not request a password reset code, please ignore this email or contact your administrator if you have questions.\nFor security, please DO NOT forward this email.", "login.email.password-reset.body": "Hola {user.nameOrEmail},\n\nHas pedido, recientemente, un código de restablecimiento de contraseña para el Panel del sitio {site}.\nEl siguiente código de restablecimiento de contraseña será válido por {timeout} minutos:\n\n{code}\n\nSi no pediste un código de restablecimiento de contraseña, por favor ignora este correo o contacta a tu administrador si tienes dudas.\nPor seguridad, por favor NO reenvíes este correo.",
"login.email.password-reset.subject": "Your password reset code", "login.email.password-reset.subject": "Tu código de restablecimiento de contraseña",
"login.remember": "Mantener sesión iniciada", "login.remember": "Mantener sesión iniciada",
"login.reset": "Reset password", "login.reset": "Restablecer contraseña",
"login.toggleText.code.email": "Login via email", "login.toggleText.code.email": "Iniciar sesión por correo electrónico",
"login.toggleText.code.email-password": "Login with password", "login.toggleText.code.email-password": "Iniciar sesión con contraseña",
"login.toggleText.password-reset.email": "Forgot your password?", "login.toggleText.password-reset.email": "¿Olvidaste tu contraseña?",
"login.toggleText.password-reset.email-password": "← Back to login", "login.toggleText.password-reset.email-password": "← Volver al inicio de sesión",
"logout": "Cerrar sesión", "logout": "Cerrar sesión",
@@ -414,34 +416,34 @@
"off": "Apagado", "off": "Apagado",
"on": "Encendido", "on": "Encendido",
"open": "Abrir", "open": "Abrir",
"open.newWindow": "Open in new window", "open.newWindow": "Abrir en una ventana nueva",
"options": "Opciones", "options": "Opciones",
"options.none": "No options", "options.none": "Sin opciones",
"orientation": "Orientación", "orientation": "Orientación",
"orientation.landscape": "Paisaje", "orientation.landscape": "Paisaje",
"orientation.portrait": "Retrato", "orientation.portrait": "Retrato",
"orientation.square": "Cuadrado", "orientation.square": "Cuadrado",
"page.blueprint": "This page has no blueprint yet. You can define the setup in <strong>/site/blueprints/pages/{blueprint}.yml</strong>", "page.blueprint": "Este archivo aún no tiene blueprint. Puedes definir la configuración en <strong>/site/blueprints/pages/{blueprint}.yml</strong>",
"page.changeSlug": "Cambiar URL", "page.changeSlug": "Cambiar URL",
"page.changeSlug.fromTitle": "Crear en base al título", "page.changeSlug.fromTitle": "Crear en base al título",
"page.changeStatus": "Cambiar estado", "page.changeStatus": "Cambiar estado",
"page.changeStatus.position": "Por favor seleccione una posición", "page.changeStatus.position": "Por favor, selecciona una posición",
"page.changeStatus.select": "Seleccione un nuevo estado", "page.changeStatus.select": "Selecciona un nuevo estado",
"page.changeTemplate": "Cambiar plantilla", "page.changeTemplate": "Cambiar plantilla",
"page.delete.confirm": "¿Realmente quieres eliminar <strong>{title}</strong>?", "page.delete.confirm": "¿Realmente quieres eliminar <strong>{title}</strong>?",
"page.delete.confirm.subpages": "<strong>Esta página tiene subpáginas</strong>. <br>Todas las subpáginas también serán eliminadas.", "page.delete.confirm.subpages": "<strong>Esta página tiene subpáginas</strong>. <br>Todas las subpáginas también serán eliminadas.",
"page.delete.confirm.title": "Introduzca el título de la página para confirmar", "page.delete.confirm.title": "Introduce el título de la página para confirmar",
"page.draft.create": "Crear borrador", "page.draft.create": "Crear borrador",
"page.duplicate.appendix": "Copiar", "page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copiar archivos", "page.duplicate.files": "Copiar archivos",
"page.duplicate.pages": "Copiar páginas", "page.duplicate.pages": "Copiar páginas",
"page.sort": "Change position", "page.sort": "Cambiar posición",
"page.status": "Estado", "page.status": "Estado",
"page.status.draft": "Borrador", "page.status.draft": "Borrador",
"page.status.draft.description": "The page is in draft mode and only visible for logged in editors or via secret link", "page.status.draft.description": "La página está en modo borrador y solo es visible para editores conectados o mediante enlace secreto.",
"page.status.listed": "Publica", "page.status.listed": "Pública",
"page.status.listed.description": "La página es pública para cualquiera", "page.status.listed.description": "La página es pública para cualquiera",
"page.status.unlisted": "Sin publicar", "page.status.unlisted": "Sin publicar",
"page.status.unlisted.description": "La página solo es accesible vía URL", "page.status.unlisted.description": "La página solo es accesible vía URL",
@@ -455,24 +457,24 @@
"pagination.page": "Página", "pagination.page": "Página",
"password": "Contraseña", "password": "Contraseña",
"paste": "Paste", "paste": "Pegar",
"paste.after": "Paste after", "paste.after": "Pegar después",
"pixel": "Pixel", "pixel": "Pixel",
"plugin": "Plugin", "plugin": "Plugin",
"plugins": "Plugins", "plugins": "Plugins",
"prev": "Anterior", "prev": "Anterior",
"preview": "Preview", "preview": "Previsualizar",
"remove": "Eliminar", "remove": "Eliminar",
"rename": "Renombrar", "rename": "Renombrar",
"replace": "Remplazar", "replace": "Remplazar",
"retry": "Inténtalo de nuevo", "retry": "Inténtalo de nuevo",
"revert": "Revertir", "revert": "Revertir",
"revert.confirm": "Do you really want to <strong>delete all unsaved changes</strong>?", "revert.confirm": "¿Realmente quieres <strong>eliminar todos los cambios sin guardar</strong>?",
"role": "Rol", "role": "Rol",
"role.admin.description": "El administrador tiene todos los derechos", "role.admin.description": "El administrador tiene todos los derechos",
"role.admin.title": "Administrador", "role.admin.title": "Administrador",
"role.all": "Todos", "role.all": "Todo",
"role.empty": "No hay usuarios con este rol", "role.empty": "No hay usuarios con este rol",
"role.description.placeholder": "Sin descripción", "role.description.placeholder": "Sin descripción",
"role.nobody.description": "Este es un rol alternativo sin permisos", "role.nobody.description": "Este es un rol alternativo sin permisos",
@@ -480,49 +482,49 @@
"save": "Guardar", "save": "Guardar",
"search": "Buscar", "search": "Buscar",
"search.min": "Enter {min} characters to search", "search.min": "Introduce {min} caracteres para buscar",
"search.all": "Show all", "search.all": "Mostrar todo",
"search.results.none": "No results", "search.results.none": "Sin resultados",
"section.required": "Esta sección es requerida", "section.required": "Esta sección es obligatoria",
"security": "Security", "security": "Seguridad",
"select": "Seleccionar", "select": "Seleccionar",
"server": "Server", "server": "Servidor",
"settings": "Ajustes", "settings": "Ajustes",
"show": "Show", "show": "Mostrar",
"site.blueprint": "The site has no blueprint yet. You can define the setup in <strong>/site/blueprints/site.yml</strong>", "site.blueprint": "Este archivo aún no tiene blueprint. Puedes definir la configuración en <strong>/site/blueprints/site.yml</strong>",
"size": "Tamaño", "size": "Tamaño",
"slug": "Apéndice URL", "slug": "Apéndice de URL",
"sort": "Ordenar", "sort": "Ordenar",
"stats.empty": "No reports", "stats.empty": "Sin informes",
"system.issues.content": "The content folder seems to be exposed", "system.issues.content": "La carpeta content parece estar expuesta",
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.kirby": "La versión de Kirby que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "La versión del plugin { plugin } que tienes instalada ha llegado al final de su vida útil y no recibirá más actualizaciones de seguridad.",
"system.issues.debug": "Debugging must be turned off in production", "system.issues.debug": "La depuración debe estar desactivada en producción",
"system.issues.git": "The .git folder seems to be exposed", "system.issues.git": "La carpeta .git parece estar expuesta",
"system.issues.https": "We recommend HTTPS for all your sites", "system.issues.https": "Recomendamos HTTPS para todos tus sitios web",
"system.issues.kirby": "The kirby folder seems to be exposed", "system.issues.kirby": "La carpeta kirby parece estar expuesta",
"system.issues.site": "The site folder seems to be exposed", "system.issues.site": "La carpeta site parece estar expuesta",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }", "system.issues.vulnerability.kirby": "Tu instalación podría estar afectada por la siguiente vulnerabilidad ({ severity } gravedad): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }", "system.issues.vulnerability.plugin": "Tu instalación podría estar afectada por la siguiente vulnerabilidad en el plugin { plugin } ({ severity } gravedad): { description }",
"system.updateStatus": "Update status", "system.updateStatus": "Estado de actualización",
"system.updateStatus.error": "Could not check for updates", "system.updateStatus.error": "No se pudo comprobar si hay actualizaciones",
"system.updateStatus.not-vulnerable": "No known vulnerabilities", "system.updateStatus.not-vulnerable": "Sin vulnerabilidades conocidas",
"system.updateStatus.security-update": "Free security update { version } available", "system.updateStatus.security-update": "Actualización gratuita de seguridad { version } disponible",
"system.updateStatus.security-upgrade": "Upgrade { version } with security fixes available", "system.updateStatus.security-upgrade": "Actualización { versión } con correcciones de seguridad disponibles",
"system.updateStatus.unreleased": "Unreleased version", "system.updateStatus.unreleased": "Versión no publicada",
"system.updateStatus.up-to-date": "Up to date", "system.updateStatus.up-to-date": "Actualizado",
"system.updateStatus.update": "Free update { version } available", "system.updateStatus.update": "Actualización gratuita {version} disponible",
"system.updateStatus.upgrade": "Upgrade { version } available", "system.updateStatus.upgrade": "Actualización {versión} disponible",
"title": "Titulo", "title": "Titulo",
"template": "Plantilla", "template": "Plantilla",
"today": "Hoy", "today": "Hoy",
"toolbar.button.code": "Código", "toolbar.button.code": "Código",
"toolbar.button.bold": "Negritas", "toolbar.button.bold": "Negrita",
"toolbar.button.email": "Correo electrónico", "toolbar.button.email": "Correo electrónico",
"toolbar.button.headings": "Encabezados", "toolbar.button.headings": "Encabezados",
"toolbar.button.heading.1": "Encabezado 1", "toolbar.button.heading.1": "Encabezado 1",
@@ -533,13 +535,13 @@
"toolbar.button.heading.6": "Encabezado 6", "toolbar.button.heading.6": "Encabezado 6",
"toolbar.button.italic": "Italica", "toolbar.button.italic": "Italica",
"toolbar.button.file": "Archivo", "toolbar.button.file": "Archivo",
"toolbar.button.file.select": "Seleccione un archivo", "toolbar.button.file.select": "Seleccionar un archivo",
"toolbar.button.file.upload": "Sube un archivo", "toolbar.button.file.upload": "Subir un archivo",
"toolbar.button.link": "Enlace", "toolbar.button.link": "Enlace",
"toolbar.button.paragraph": "Paragraph", "toolbar.button.paragraph": "Parágrafo",
"toolbar.button.strike": "Strike-through", "toolbar.button.strike": "Tachado",
"toolbar.button.ol": "Lista ordenada", "toolbar.button.ol": "Lista ordenada",
"toolbar.button.underline": "Underline", "toolbar.button.underline": "Subrayado",
"toolbar.button.ul": "Lista de viñetas", "toolbar.button.ul": "Lista de viñetas",
"translation.author": "Turqueso", "translation.author": "Turqueso",
@@ -548,15 +550,15 @@
"translation.locale": "es_ES", "translation.locale": "es_ES",
"upload": "Subir", "upload": "Subir",
"upload.error.cantMove": "El archivo subido no puede ser movido", "upload.error.cantMove": "El archivo subido no pudo ser movido",
"upload.error.cantWrite": "Error al escribir el archivo en el disco", "upload.error.cantWrite": "Error al escribir el archivo en el disco",
"upload.error.default": "El archivo no pudo ser subido", "upload.error.default": "El archivo no pudo ser subido",
"upload.error.extension": "Subida de archivo detenida por la extensión", "upload.error.extension": "Subida de archivo detenida por la extensión",
"upload.error.formSize": "El archivo subido excede la directiva MAX_FILE_SIZE que fue especificada en el formulario", "upload.error.formSize": "El archivo subido excede la directiva MAX_FILE_SIZE que fue especificada en el formulario",
"upload.error.iniPostSize": "El archivo subido excede la directiva post_max_size directive en php.ini", "upload.error.iniPostSize": "El archivo subido excede la directiva post_max_size directive en php.ini",
"upload.error.iniSize": "El archivo subido excede la directiva upload_max_filesize en php.ini", "upload.error.iniSize": "El archivo subido excede la directiva upload_max_filesize en php.ini",
"upload.error.noFile": "Ningún archivo ha sido subido", "upload.error.noFile": "No se ha subido ningún archivo",
"upload.error.noFiles": "Ningún archivo ha sido subido", "upload.error.noFiles": "No se ha subido ningún archivo",
"upload.error.partial": "El archivo ha sido subido solo parcialmente", "upload.error.partial": "El archivo ha sido subido solo parcialmente",
"upload.error.tmpDir": "No se encuentra la carpeta temporal", "upload.error.tmpDir": "No se encuentra la carpeta temporal",
"upload.errors": "Error", "upload.errors": "Error",
@@ -566,15 +568,15 @@
"url.placeholder": "https://ejemplo.com", "url.placeholder": "https://ejemplo.com",
"user": "Usuario", "user": "Usuario",
"user.blueprint": "You can define additional sections and form fields for this user role in <strong>/site/blueprints/users/{blueprint}.yml</strong>", "user.blueprint": "Puedes definir secciones y campos de formulario adicionales para este rol de usuario en <strong>/site/blueprints/users/{blueprint}.yml</strong>",
"user.changeEmail": "Cambiar correo electrónico", "user.changeEmail": "Cambiar correo electrónico",
"user.changeLanguage": "Cambiar idioma", "user.changeLanguage": "Cambiar idioma",
"user.changeName": "Renombrar a este usuario", "user.changeName": "Renombrar a este usuario",
"user.changePassword": "Cambia contraseña", "user.changePassword": "Cambiar contraseña",
"user.changePassword.new": "Nueva contraseña", "user.changePassword.new": "Nueva contraseña",
"user.changePassword.new.confirm": "Confirmar nueva contraseña…", "user.changePassword.new.confirm": "Confirmar nueva contraseña…",
"user.changeRole": "Cambiar rol", "user.changeRole": "Cambiar rol",
"user.changeRole.select": "Seleccione un nuevo rol", "user.changeRole.select": "Seleccionar un nuevo rol",
"user.create": "Añadir un nuevo usuario", "user.create": "Añadir un nuevo usuario",
"user.delete": "Eliminar este usuario", "user.delete": "Eliminar este usuario",
"user.delete.confirm": "¿Realmente quieres eliminar <br><strong>{email}</strong>?", "user.delete.confirm": "¿Realmente quieres eliminar <br><strong>{email}</strong>?",
@@ -582,19 +584,19 @@
"users": "Usuarios", "users": "Usuarios",
"version": "Versión", "version": "Versión",
"version.current": "Current version", "version.current": "Versión actual",
"version.latest": "Latest version", "version.latest": "Última versión",
"versionInformation": "Version information", "versionInformation": "Información sobre la versión",
"view.account": "Su cuenta", "view.account": "Tu cuenta",
"view.installation": "Instalación", "view.installation": "Instalación",
"view.languages": "Idiomas", "view.languages": "Idiomas",
"view.resetPassword": "Reset password", "view.resetPassword": "Restablecer contraseña",
"view.site": "Sitio", "view.site": "Sitio",
"view.system": "System", "view.system": "Sistema",
"view.users": "Usuarios", "view.users": "Usuarios",
"welcome": "Bienvenido(a)", "welcome": "Bienvenido(a)",
"year": "Año", "year": "Año",
"yes": "yes" "yes": ""
} }

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "You must add at least one block",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "قالب ایمیل «{name}» پیدا نشد", "error.email.preset.notFound": "قالب ایمیل «{name}» پیدا نشد",
"error.field.converter.invalid": "مبدل «{converter}» نامعتبر است", "error.field.converter.invalid": "مبدل «{converter}» نامعتبر است",
@@ -320,7 +322,7 @@
"installation.issues.headline": "نصب پانل کاربری ممکن نیست", "installation.issues.headline": "نصب پانل کاربری ممکن نیست",
"installation.issues.mbstring": "افزونه <code>MB String</code> مورد نیاز است", "installation.issues.mbstring": "افزونه <code>MB String</code> مورد نیاز است",
"installation.issues.media": "پوشه <code>/media</code> موجود نیست یا قابل نوشتن نیست", "installation.issues.media": "پوشه <code>/media</code> موجود نیست یا قابل نوشتن نیست",
"installation.issues.php": "لطفا از پی‌اچ‌پی 7 یا بالاتر استفاده کنید", "installation.issues.php": "لطفا از پی‌اچ‌پی 8 یا بالاتر استفاده کنید",
"installation.issues.server": "کربی نیاز به <code>Apache</code>، <code>Nginx</code> یا <code>Caddy</code> دارد", "installation.issues.server": "کربی نیاز به <code>Apache</code>، <code>Nginx</code> یا <code>Caddy</code> دارد",
"installation.issues.sessions": "پوشه <code>/site/sessions</code> وجود ندارد یا قابل نوشتن نیست", "installation.issues.sessions": "پوشه <code>/site/sessions</code> وجود ندارد یا قابل نوشتن نیست",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Lisää vähintään yksi lohko", "error.blocks.min.singular": "Lisää vähintään yksi lohko",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Nimellä \"{name}\" ja kyseisellä verkkotunnuksella ei löydy sähköpostiosoitetta", "error.email.preset.notFound": "Nimellä \"{name}\" ja kyseisellä verkkotunnuksella ei löydy sähköpostiosoitetta",
"error.field.converter.invalid": "Muunnin \"{converter}\" ei kelpaa", "error.field.converter.invalid": "Muunnin \"{converter}\" ei kelpaa",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Paneelia ei voida asentaa", "installation.issues.headline": "Paneelia ei voida asentaa",
"installation.issues.mbstring": "<code>MB String</code>-laajennos on pakollinen", "installation.issues.mbstring": "<code>MB String</code>-laajennos on pakollinen",
"installation.issues.media": "<code>/media</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa", "installation.issues.media": "<code>/media</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",
"installation.issues.php": "Varmista että <code>PHP 7+</code> on käytössä", "installation.issues.php": "Varmista että <code>PHP 8+</code> on käytössä",
"installation.issues.server": "Kirby tarvitsee jonkun seuraavista: <code>Apache</code>, <code>Nginx</code> tai <code>Caddy</code>", "installation.issues.server": "Kirby tarvitsee jonkun seuraavista: <code>Apache</code>, <code>Nginx</code> tai <code>Caddy</code>",
"installation.issues.sessions": "<code>/site/sessions</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa", "installation.issues.sessions": "<code>/site/sessions</code> -kansio ei ole olemassa tai siihen ei voi kirjoittaa",

View File

@@ -72,10 +72,12 @@
"error.blocks.min.singular": "Vous devez ajouter au moins un bloc", "error.blocks.min.singular": "Vous devez ajouter au moins un bloc",
"error.blocks.validation": "Il y a une erreur sur le champ \"{field}\" du bloc {index} utilisant le type de bloc \"{fieldset}\"", "error.blocks.validation": "Il y a une erreur sur le champ \"{field}\" du bloc {index} utilisant le type de bloc \"{fieldset}\"",
"error.cache.type.invalid": "Type de cache incorrect \"{type}\"",
"error.email.preset.notFound": "La configuration de courriel « {name} » na pu être trouvé ", "error.email.preset.notFound": "La configuration de courriel « {name} » na pu être trouvé ",
"error.field.converter.invalid": "Convertisseur « {converter} » incorrect", "error.field.converter.invalid": "Convertisseur « {converter} » incorrect",
"error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist", "error.field.type.missing": "Champ \"{ name }\" : Le type de champ \"{ type }\" nexiste pas",
"error.file.changeName.empty": "Le nom ne peut être vide", "error.file.changeName.empty": "Le nom ne peut être vide",
"error.file.changeName.permission": "Vous nêtes pas autorisé à modifier le nom de « {filename} »", "error.file.changeName.permission": "Vous nêtes pas autorisé à modifier le nom de « {filename} »",
@@ -290,7 +292,7 @@
"field.pages.empty": "Pas encore de page sélectionnée", "field.pages.empty": "Pas encore de page sélectionnée",
"field.structure.delete.confirm": "Voulez-vous vraiment supprimer cette ligne ?", "field.structure.delete.confirm": "Voulez-vous vraiment supprimer cette ligne ?",
"field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.delete.confirm.all": "Voulez-vous vraiment supprimer toutes les entrées ?",
"field.structure.empty": "Pas encore dentrée", "field.structure.empty": "Pas encore dentrée",
"field.users.empty": "Pas encore dutilisateur sélectionné", "field.users.empty": "Pas encore dutilisateur sélectionné",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Le Panel ne peut être installé", "installation.issues.headline": "Le Panel ne peut être installé",
"installation.issues.mbstring": "Lextension <code>MB String</code> est requise", "installation.issues.mbstring": "Lextension <code>MB String</code> est requise",
"installation.issues.media": "Le dossier <code>/media</code> nexiste pas ou nest pas accessible en écriture", "installation.issues.media": "Le dossier <code>/media</code> nexiste pas ou nest pas accessible en écriture",
"installation.issues.php": "Veuillez utiliser <code>PHP 7+</code>", "installation.issues.php": "Veuillez utiliser <code>PHP 8+</code>",
"installation.issues.server": "Kirby requiert <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>", "installation.issues.server": "Kirby requiert <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
"installation.issues.sessions": "Le dossier <code>/site/sessions</code> nexiste pas ou nest pas accessible en écriture", "installation.issues.sessions": "Le dossier <code>/site/sessions</code> nexiste pas ou nest pas accessible en écriture",
@@ -351,8 +353,8 @@
"license.manage": "Gérer vos licences", "license.manage": "Gérer vos licences",
"license.register.help": "Vous avez reçu votre numéro de licence par courriel après l'achat. Veuillez le copier et le coller ici pour l'enregistrer.", "license.register.help": "Vous avez reçu votre numéro de licence par courriel après l'achat. Veuillez le copier et le coller ici pour l'enregistrer.",
"license.register.label": "Veuillez saisir votre numéro de licence", "license.register.label": "Veuillez saisir votre numéro de licence",
"license.register.domain": "Your license will be registered to <strong>{host}</strong>.", "license.register.domain": "Votre licence sera enregistrée pour <strong>{host}</strong>.",
"license.register.local": "You are about to register your license for your local domain <strong>{host}</strong>. If this site will be deployed to a public domain, please register it there instead. If {host} is the domain you want to license Kirby to, please continue.", "license.register.local": "Vous êtes sur le point denregistrer votre licence pour votre domaine local <strong>{host}</strong>. Si votre site sera déployé sur un domaine publique, veuillez plutôt ly lenregistrer. Si {host} est le domaine pour lequel vous voulez enregistrer Kirby, veuillez continuer.",
"license.register.success": "Merci pour votre soutien à Kirby", "license.register.success": "Merci pour votre soutien à Kirby",
"license.unregistered": "Ceci est une démo non enregistrée de Kirby", "license.unregistered": "Ceci est une démo non enregistrée de Kirby",
"license.unregistered.label": "Non enregistré", "license.unregistered.label": "Non enregistré",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Legalább egy blokkot hozzá kell adnod", "error.blocks.min.singular": "Legalább egy blokkot hozzá kell adnod",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "A \"{name}\" email-beállítás nem található", "error.email.preset.notFound": "A \"{name}\" email-beállítás nem található",
"error.field.converter.invalid": "Érvénytelen konverter: \"{converter}\"", "error.field.converter.invalid": "Érvénytelen konverter: \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "A panel telepítése sikertelen", "installation.issues.headline": "A panel telepítése sikertelen",
"installation.issues.mbstring": "Az <code>MB String</code> bővítmény engedélyezése szükséges", "installation.issues.mbstring": "Az <code>MB String</code> bővítmény engedélyezése szükséges",
"installation.issues.media": "A <code>/media</code> mappa nem létezik vagy nem írható", "installation.issues.media": "A <code>/media</code> mappa nem létezik vagy nem írható",
"installation.issues.php": "Bizonyosodj meg róla, hogy az általad használt PHP-verzió <code>PHP 7+</code>", "installation.issues.php": "Bizonyosodj meg róla, hogy az általad használt PHP-verzió <code>PHP 8+</code>",
"installation.issues.server": "A Kirby az alábbi szervereken futtatható: <code>Apache</code>, <code>Nginx</code> vagy <code>Caddy</code>", "installation.issues.server": "A Kirby az alábbi szervereken futtatható: <code>Apache</code>, <code>Nginx</code> vagy <code>Caddy</code>",
"installation.issues.sessions": "A <code>/site/sessions</code> könyvtár nem létezik vagy nem írható", "installation.issues.sessions": "A <code>/site/sessions</code> könyvtár nem létezik vagy nem írható",

View File

@@ -1,10 +1,10 @@
{ {
"account.changeName": "Change your name", "account.changeName": "Ubah nama Anda",
"account.delete": "Delete your account", "account.delete": "Hapus akun Anda",
"account.delete.confirm": "Do you really want to delete your account? You will be logged out immediately. Your account cannot be recovered.", "account.delete.confirm": "Anda yakin menghapus akun? Anda akan dikeluarkan segera. Akun Anda tidak dapat dipulihkan.",
"add": "Tambah", "add": "Tambah",
"author": "Author", "author": "Penulis",
"avatar": "Gambar profil", "avatar": "Gambar profil",
"back": "Kembali", "back": "Kembali",
"cancel": "Batal", "cancel": "Batal",
@@ -14,7 +14,7 @@
"collapse": "Lipat", "collapse": "Lipat",
"collapse.all": "Lipat Semua", "collapse.all": "Lipat Semua",
"copy": "Salin", "copy": "Salin",
"copy.all": "Copy all", "copy.all": "Salin semua",
"create": "Buat", "create": "Buat",
"date": "Tanggal", "date": "Tanggal",
@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Anda setidaknya menambahkan satu blok", "error.blocks.min.singular": "Anda setidaknya menambahkan satu blok",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Surel \"{name}\" tidak dapat ditemukan", "error.email.preset.notFound": "Surel \"{name}\" tidak dapat ditemukan",
"error.field.converter.invalid": "Konverter \"{converter}\" tidak valid", "error.field.converter.invalid": "Konverter \"{converter}\" tidak valid",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Panel tidak dapat dipasang", "installation.issues.headline": "Panel tidak dapat dipasang",
"installation.issues.mbstring": "Ekstensi <code>MB String</code> diperlukan", "installation.issues.mbstring": "Ekstensi <code>MB String</code> diperlukan",
"installation.issues.media": "Folder <code>/media</code> tidak ada atau tidak dapat ditulis", "installation.issues.media": "Folder <code>/media</code> tidak ada atau tidak dapat ditulis",
"installation.issues.php": "Pastikan Anda menggunakan <code>PHP 7+</code>", "installation.issues.php": "Pastikan Anda menggunakan <code>PHP 8+</code>",
"installation.issues.server": "Kirby memerlukan <code>Apache</code>, <code>Nginx</code>, atau <code>Caddy</code>", "installation.issues.server": "Kirby memerlukan <code>Apache</code>, <code>Nginx</code>, atau <code>Caddy</code>",
"installation.issues.sessions": "Folder <code>/site/sessions</code> tidak ada atau tidak dapat ditulis", "installation.issues.sessions": "Folder <code>/site/sessions</code> tidak ada atau tidak dapat ditulis",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Allavegana einn bálkur takk", "error.blocks.min.singular": "Allavegana einn bálkur takk",
"error.blocks.validation": "Það er villa í {field} sviðinu í bálkinum {index} sem notar {fieldset} bálkgerðina", "error.blocks.validation": "Það er villa í {field} sviðinu í bálkinum {index} sem notar {fieldset} bálkgerðina",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Netfangstillingarnar: \"{name}\" fundust ekki", "error.email.preset.notFound": "Netfangstillingarnar: \"{name}\" fundust ekki",
"error.field.converter.invalid": "Ógildur umbreytari \"{converter}\"", "error.field.converter.invalid": "Ógildur umbreytari \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Uppsetning Panelsins mistókst hrapalega", "installation.issues.headline": "Uppsetning Panelsins mistókst hrapalega",
"installation.issues.mbstring": "<code>MB String</code> er hér bráðnauðsynleg", "installation.issues.mbstring": "<code>MB String</code> er hér bráðnauðsynleg",
"installation.issues.media": "<code>/media</code> mappan er annaðhvort ekki til eða er ekki skrifanleg", "installation.issues.media": "<code>/media</code> mappan er annaðhvort ekki til eða er ekki skrifanleg",
"installation.issues.php": "Notaðu <code>PHP 7+</code>", "installation.issues.php": "Notaðu <code>PHP 8+</code>",
"installation.issues.server": "Kirby krefst <code>Apache</code>, <code>Nginx</code> eða <code>Caddy</code>", "installation.issues.server": "Kirby krefst <code>Apache</code>, <code>Nginx</code> eða <code>Caddy</code>",
"installation.issues.sessions": "<code>/site/sessions</code> mappan er annaðhvort ekki til eða er ekki skrifanleg", "installation.issues.sessions": "<code>/site/sessions</code> mappan er annaðhvort ekki til eða er ekki skrifanleg",

View File

@@ -49,13 +49,13 @@
"email": "Email", "email": "Email",
"email.placeholder": "mail@esempio.com", "email.placeholder": "mail@esempio.com",
"entries": "Entries", "entries": "Voci",
"entry": "Entry", "entry": "Voce",
"environment": "Ambiente", "environment": "Ambiente",
"error.access.code": "Codice non valido", "error.access.code": "Codice non valido",
"error.access.login": "Login Invalido", "error.access.login": "Login invalido",
"error.access.panel": "Non ti è permesso accedere al pannello", "error.access.panel": "Non ti è permesso accedere al pannello",
"error.access.view": "Non ti è permesso accedere a questa parte del pannello", "error.access.view": "Non ti è permesso accedere a questa parte del pannello",
@@ -70,12 +70,14 @@
"error.blocks.max.singular": "Non puoi aggiungere più di un blocco", "error.blocks.max.singular": "Non puoi aggiungere più di un blocco",
"error.blocks.min.plural": "Devi aggiungere almeno {min} blocchi", "error.blocks.min.plural": "Devi aggiungere almeno {min} blocchi",
"error.blocks.min.singular": "Devi aggiungere almeno un blocco", "error.blocks.min.singular": "Devi aggiungere almeno un blocco",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "C'è un errore sul campo \"{field}\" nel blocco {index} che utilizza il tipo di blocco \"{fieldset}\"",
"error.cache.type.invalid": "Tipo di cache \"{type}\" non valido",
"error.email.preset.notFound": "Non è stato possibile trovare il preset email \"{name}\"", "error.email.preset.notFound": "Non è stato possibile trovare il preset email \"{name}\"",
"error.field.converter.invalid": "Convertitore \"{converter}\" non valido", "error.field.converter.invalid": "Convertitore \"{converter}\" non valido",
"error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist", "error.field.type.missing": "Campo \"{ name }\": il tipo di campo \"{ type }\" non esiste",
"error.file.changeName.empty": "Il nome non dev'essere vuoto", "error.file.changeName.empty": "Il nome non dev'essere vuoto",
"error.file.changeName.permission": "Non ti è permesso modificare il nome di \"{filename}\"", "error.file.changeName.permission": "Non ti è permesso modificare il nome di \"{filename}\"",
@@ -108,14 +110,14 @@
"error.language.name": "Inserisci un nome valido per la lingua", "error.language.name": "Inserisci un nome valido per la lingua",
"error.language.notFound": "La lingua non è stata trovata", "error.language.notFound": "La lingua non è stata trovata",
"error.layout.validation.block": "There's an error on the \"{field}\" field in block {blockIndex} using the \"{fieldset}\" block type in layout {layoutIndex}", "error.layout.validation.block": "C'è un errore sul campo \"{field}\" nel blocco {blockIndex} che utilizza il tipo di blocco \"{fieldset}\" nel layout {layoutIndex}",
"error.layout.validation.settings": "C'è un errore nelle impostazioni del layout {index}", "error.layout.validation.settings": "C'è un errore nelle impostazioni del layout {index}",
"error.license.format": "Inserisci un codice di licenza valido", "error.license.format": "Inserisci un codice di licenza valido",
"error.license.email": "Inserisci un indirizzo email valido", "error.license.email": "Inserisci un indirizzo email valido",
"error.license.verification": "Non è stato possibile verificare la licenza", "error.license.verification": "Non è stato possibile verificare la licenza",
"error.object.validation": "Theres an error in the \"{label}\" field:\n{message}", "error.object.validation": "C'è un errore nel campo \"{label}\":\n{message}",
"error.offline": "Il pannello di controllo è attualmente offline", "error.offline": "Il pannello di controllo è attualmente offline",
@@ -285,12 +287,12 @@
"field.layout.empty": "Nessuna riga inserita", "field.layout.empty": "Nessuna riga inserita",
"field.layout.select": "Scegli un layout", "field.layout.select": "Scegli un layout",
"field.object.empty": "No information yet", "field.object.empty": "Ancora nessuna informazione",
"field.pages.empty": "Nessuna pagina selezionata", "field.pages.empty": "Nessuna pagina selezionata",
"field.structure.delete.confirm": "Vuoi veramente eliminare questo elemento?", "field.structure.delete.confirm": "Vuoi veramente eliminare questo elemento?",
"field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.delete.confirm.all": "Vuoi davvero cancellare tutte le voci?",
"field.structure.empty": "Non ci sono ancora elementi.", "field.structure.empty": "Non ci sono ancora elementi.",
"field.users.empty": "Nessun utente selezionato", "field.users.empty": "Nessun utente selezionato",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Il pannello non può esser installato", "installation.issues.headline": "Il pannello non può esser installato",
"installation.issues.mbstring": "È necessaria l'estensione <code>MB String</code>", "installation.issues.mbstring": "È necessaria l'estensione <code>MB String</code>",
"installation.issues.media": "La cartella <code>/media</code> non esiste o non dispone dei permessi di scrittura", "installation.issues.media": "La cartella <code>/media</code> non esiste o non dispone dei permessi di scrittura",
"installation.issues.php": "Assicurati di utilizzare <code>PHP 7.1+</code>", "installation.issues.php": "Assicurati di utilizzare <code>PHP 8+</code>",
"installation.issues.server": "Kirby necessita di <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>", "installation.issues.server": "Kirby necessita di <code>Apache</code>, <code>Nginx</code> o <code>Caddy</code>",
"installation.issues.sessions": "La cartella <code>/site/sessions</code>non esiste o non dispone dei permessi di scrittura", "installation.issues.sessions": "La cartella <code>/site/sessions</code>non esiste o non dispone dei permessi di scrittura",
@@ -348,14 +350,14 @@
"license": "Licenza di Kirby", "license": "Licenza di Kirby",
"license.buy": "Acquista una licenza", "license.buy": "Acquista una licenza",
"license.register": "Registra", "license.register": "Registra",
"license.manage": "Manage your licenses", "license.manage": "Gestisci le tue licenze",
"license.register.help": "Hai ricevuto il codice di licenza tramite email dopo l'acquisto. Per favore inseriscilo per registrare Kirby.", "license.register.help": "Hai ricevuto il codice di licenza tramite email dopo l'acquisto. Per favore inseriscilo per registrare Kirby.",
"license.register.label": "Inserisci il codice di licenza", "license.register.label": "Inserisci il codice di licenza",
"license.register.domain": "Your license will be registered to <strong>{host}</strong>.", "license.register.domain": "La tua licenza verrà registrata su <strong>{host}</strong>.",
"license.register.local": "You are about to register your license for your local domain <strong>{host}</strong>. If this site will be deployed to a public domain, please register it there instead. If {host} is the domain you want to license Kirby to, please continue.", "license.register.local": "Stai per registrare la licenza per il dominio locale <strong>{host}</strong>. Se questo sito verrà rilasciato su un dominio pubblico, ti preghiamo di registrarlo lì. Se {host} è il dominio per il quale desideri ottenere la licenza di Kirby, procedi pure.",
"license.register.success": "Ti ringraziamo per aver supportato Kirby", "license.register.success": "Ti ringraziamo per aver supportato Kirby",
"license.unregistered": "Questa è una versione demo di Kirby non registrata", "license.unregistered": "Questa è una versione demo di Kirby non registrata",
"license.unregistered.label": "Unregistered", "license.unregistered.label": "Non registrato",
"link": "Link", "link": "Link",
"link.text": "Testo del link", "link.text": "Testo del link",
@@ -486,7 +488,7 @@
"section.required": "La sezione è obbligatoria", "section.required": "La sezione è obbligatoria",
"security": "Security", "security": "Sicurezza",
"select": "Seleziona", "select": "Seleziona",
"server": "Server", "server": "Server",
"settings": "Impostazioni", "settings": "Impostazioni",
@@ -496,26 +498,26 @@
"slug": "URL", "slug": "URL",
"sort": "Ordina", "sort": "Ordina",
"stats.empty": "No reports", "stats.empty": "Nessuna segnalazione",
"system.issues.content": "The content folder seems to be exposed", "system.issues.content": "La cartella content sembra essere esposta",
"system.issues.eol.kirby": "Your installed Kirby version has reached end-of-life and will not receive further security updates", "system.issues.eol.kirby": "La versione di Kirby installata è giunta alla fine del suo ciclo di vita e non riceverà ulteriori aggiornamenti di sicurezza ",
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "La versione installata del plugin { plugin } è giunta alla fine del suo ciclo di vita e non riceverà ulteriori aggiornamenti di sicurezza",
"system.issues.debug": "Debugging must be turned off in production", "system.issues.debug": "Il debug deve essere disattivato in produzione",
"system.issues.git": "The .git folder seems to be exposed", "system.issues.git": "La cartella .git sembra essere esposta",
"system.issues.https": "We recommend HTTPS for all your sites", "system.issues.https": "Raccomandiamo l'utilizzo di HTTPS per tutti i siti",
"system.issues.kirby": "The kirby folder seems to be exposed", "system.issues.kirby": "La cartella kirby sembra essere esposta",
"system.issues.site": "The site folder seems to be exposed", "system.issues.site": "La cartella site sembra essere esposta",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }", "system.issues.vulnerability.kirby": "La tua installazione potrebbe essere colpita dalla seguente vulnerabilità ({ severity } gravità): { description }",
"system.issues.vulnerability.plugin": "Your installation might be affected by the following vulnerability in the { plugin } plugin ({ severity } severity): { description }", "system.issues.vulnerability.plugin": "La tua installazione potrebbe essere colpita dalla seguente vulnerabilità nel plugin { plugin } ({ severity } gravità): { description }",
"system.updateStatus": "Update status", "system.updateStatus": "Aggiorna lo stato",
"system.updateStatus.error": "Could not check for updates", "system.updateStatus.error": "Impossibile verificare gli aggiornamenti",
"system.updateStatus.not-vulnerable": "No known vulnerabilities", "system.updateStatus.not-vulnerable": "Nessuna vulnerabilità conosciuta",
"system.updateStatus.security-update": "Free security update { version } available", "system.updateStatus.security-update": "Aggiornamento di sicurezza gratuito { version } disponibile",
"system.updateStatus.security-upgrade": "Upgrade { version } with security fixes available", "system.updateStatus.security-upgrade": "Aggiornamento { version } con le correzioni di sicurezza disponibili",
"system.updateStatus.unreleased": "Unreleased version", "system.updateStatus.unreleased": "Versione non rilasciata",
"system.updateStatus.up-to-date": "Up to date", "system.updateStatus.up-to-date": "Aggiornato",
"system.updateStatus.update": "Free update { version } available", "system.updateStatus.update": "Aggiornamento gratuito { version } disponibile",
"system.updateStatus.upgrade": "Upgrade { version } available", "system.updateStatus.upgrade": "Aggiornamento { version } disponibile",
"title": "Titolo", "title": "Titolo",
"template": "Template", "template": "Template",
@@ -582,9 +584,9 @@
"users": "Utenti", "users": "Utenti",
"version": "Versione di Kirby", "version": "Versione di Kirby",
"version.current": "Current version", "version.current": "Versione corrente",
"version.latest": "Latest version", "version.latest": "Ultima versione",
"versionInformation": "Version information", "versionInformation": "Informazioni sulla versione",
"view.account": "Il tuo account", "view.account": "Il tuo account",
"view.installation": "Installazione", "view.installation": "Installazione",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "블록을 하나 이상 추가하세요.", "error.blocks.min.singular": "블록을 하나 이상 추가하세요.",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "기본 이메일 주소({name})가 없습니다.", "error.email.preset.notFound": "기본 이메일 주소({name})가 없습니다.",
"error.field.converter.invalid": "컨버터({converter})가 올바르지 않습니다.", "error.field.converter.invalid": "컨버터({converter})가 올바르지 않습니다.",
@@ -320,7 +322,7 @@
"installation.issues.headline": "패널을 설치할 수 없습니다.", "installation.issues.headline": "패널을 설치할 수 없습니다.",
"installation.issues.mbstring": "<code>MB String</code> 확장 모듈이 필요합니다.", "installation.issues.mbstring": "<code>MB String</code> 확장 모듈이 필요합니다.",
"installation.issues.media": "<code>/media</code> 폴더의 쓰기 권한을 확인하세요.", "installation.issues.media": "<code>/media</code> 폴더의 쓰기 권한을 확인하세요.",
"installation.issues.php": "<code>PHP</code> 버전이 7 이상인지 확인하세요.", "installation.issues.php": "<code>PHP</code> 버전이 8 이상인지 확인하세요.",
"installation.issues.server": "Kirby를 실행하려면 <code>Apache</code>, <code>Nginx</code>, 또는 <code>Caddy</code>가 필요합니다.", "installation.issues.server": "Kirby를 실행하려면 <code>Apache</code>, <code>Nginx</code>, 또는 <code>Caddy</code>가 필요합니다.",
"installation.issues.sessions": "<code>/site/sessions</code> 폴더의 쓰기 권한을 확인하세요.", "installation.issues.sessions": "<code>/site/sessions</code> 폴더의 쓰기 권한을 확인하세요.",

View File

@@ -72,10 +72,12 @@
"error.blocks.min.singular": "Jūs turite pridėti bent vieną bloką", "error.blocks.min.singular": "Jūs turite pridėti bent vieną bloką",
"error.blocks.validation": "Yra klaida laukelyje \"{field}\" bloke {index} naudojant bloko tipą \"{fieldset}\"", "error.blocks.validation": "Yra klaida laukelyje \"{field}\" bloke {index} naudojant bloko tipą \"{fieldset}\"",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "El. pašto paruoštukas \"{name}\" nerastas", "error.email.preset.notFound": "El. pašto paruoštukas \"{name}\" nerastas",
"error.field.converter.invalid": "Neteisingas konverteris \"{converter}\"", "error.field.converter.invalid": "Neteisingas konverteris \"{converter}\"",
"error.field.type.missing": "Field \"{ name }\": The field type \"{ type }\" does not exist", "error.field.type.missing": "Laukelis \"{ name }\": Šio tipo (\"{ type }\") laukelis neegzistuoja",
"error.file.changeName.empty": "Pavadinimas negali būti tuščias", "error.file.changeName.empty": "Pavadinimas negali būti tuščias",
"error.file.changeName.permission": "Neturite teisės pakeisti failo pavadinimo \"{filename}\"", "error.file.changeName.permission": "Neturite teisės pakeisti failo pavadinimo \"{filename}\"",
@@ -290,7 +292,7 @@
"field.pages.empty": "Dar nėra puslapių", "field.pages.empty": "Dar nėra puslapių",
"field.structure.delete.confirm": "Ar tikrai norite pašalinti šią eilutę?", "field.structure.delete.confirm": "Ar tikrai norite pašalinti šią eilutę?",
"field.structure.delete.confirm.all": "Do you really want to delete all entries?", "field.structure.delete.confirm.all": "Ar tikrai norite išrtinti visus įrašus?",
"field.structure.empty": "Dar nėra įrašų", "field.structure.empty": "Dar nėra įrašų",
"field.users.empty": "Dar nėra vartotojų", "field.users.empty": "Dar nėra vartotojų",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Nepavyko įdiegti valdymo pulto", "installation.issues.headline": "Nepavyko įdiegti valdymo pulto",
"installation.issues.mbstring": "Plėtinys <code>MB String</code> yra privalomas", "installation.issues.mbstring": "Plėtinys <code>MB String</code> yra privalomas",
"installation.issues.media": "Katalogas <code>/media</code> neegzistuoja arba neturi įrašymo teisių", "installation.issues.media": "Katalogas <code>/media</code> neegzistuoja arba neturi įrašymo teisių",
"installation.issues.php": "Įsitikinkite, kad naudojama <code>PHP 7+</code>", "installation.issues.php": "Įsitikinkite, kad naudojama <code>PHP 8+</code>",
"installation.issues.server": "Kirby reikalauja <code>Apache</code>, <code>Nginx</code> arba <code>Caddy</code>", "installation.issues.server": "Kirby reikalauja <code>Apache</code>, <code>Nginx</code> arba <code>Caddy</code>",
"installation.issues.sessions": "Katalogas <code>/site/sessions</code> neegzistuoja arba neturi įrašymo teisių", "installation.issues.sessions": "Katalogas <code>/site/sessions</code> neegzistuoja arba neturi įrašymo teisių",
@@ -502,7 +504,7 @@
"system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates", "system.issues.eol.plugin": "Your installed version of the { plugin } plugin is has reached end-of-life and will not receive further security updates",
"system.issues.debug": "Debugging must be turned off in production", "system.issues.debug": "Debugging must be turned off in production",
"system.issues.git": "The .git folder seems to be exposed", "system.issues.git": "The .git folder seems to be exposed",
"system.issues.https": "We recommend HTTPS for all your sites", "system.issues.https": "Rekomenduojame HTTPS visoms svetainėms",
"system.issues.kirby": "The kirby folder seems to be exposed", "system.issues.kirby": "The kirby folder seems to be exposed",
"system.issues.site": "The site folder seems to be exposed", "system.issues.site": "The site folder seems to be exposed",
"system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }", "system.issues.vulnerability.kirby": "Your installation might be affected by the following vulnerability ({ severity } severity): { description }",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Du må legge til minst en blokk", "error.blocks.min.singular": "Du må legge til minst en blokk",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "E-postinnstillingen \"{name}\" ble ikke funnet", "error.email.preset.notFound": "E-postinnstillingen \"{name}\" ble ikke funnet",
"error.field.converter.invalid": "Ugyldig omformer \"{converter}\"", "error.field.converter.invalid": "Ugyldig omformer \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Panelet kan ikke installeres", "installation.issues.headline": "Panelet kan ikke installeres",
"installation.issues.mbstring": "Utvidelsen <code>MB String</code> er nødvendig", "installation.issues.mbstring": "Utvidelsen <code>MB String</code> er nødvendig",
"installation.issues.media": "Mappen <code>/media</code> eksisterer ikke eller er ikke skrivbar", "installation.issues.media": "Mappen <code>/media</code> eksisterer ikke eller er ikke skrivbar",
"installation.issues.php": "Pass på at du bruker <code>PHP 7+</code>", "installation.issues.php": "Pass på at du bruker <code>PHP 8+</code>",
"installation.issues.server": "Kirby krever <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>", "installation.issues.server": "Kirby krever <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
"installation.issues.sessions": "Mappen <code>/site/sessions</code> eksisterer ikke eller er ikke skrivbar", "installation.issues.sessions": "Mappen <code>/site/sessions</code> eksisterer ikke eller er ikke skrivbar",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Je moet ten minste één blok toevoegen", "error.blocks.min.singular": "Je moet ten minste één blok toevoegen",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "De e-mailvoorinstelling \"{name}\" kan niet worden gevonden", "error.email.preset.notFound": "De e-mailvoorinstelling \"{name}\" kan niet worden gevonden",
"error.field.converter.invalid": "Ongeldige converter \"{converter}\"", "error.field.converter.invalid": "Ongeldige converter \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Het Panel kan niet worden geïnstalleerd", "installation.issues.headline": "Het Panel kan niet worden geïnstalleerd",
"installation.issues.mbstring": "De <code>MB String</code> extensie is verplicht", "installation.issues.mbstring": "De <code>MB String</code> extensie is verplicht",
"installation.issues.media": "De map <code>/media</code>bestaat niet of heeft geen schrijfrechten", "installation.issues.media": "De map <code>/media</code>bestaat niet of heeft geen schrijfrechten",
"installation.issues.php": "Gebruik <code>PHP7+</code>", "installation.issues.php": "Gebruik <code>PHP8+</code>",
"installation.issues.server": "Kirby vereist <code>Apache</code>, <code>Nginx</code> of <code>Caddy</code>", "installation.issues.server": "Kirby vereist <code>Apache</code>, <code>Nginx</code> of <code>Caddy</code>",
"installation.issues.sessions": "De map <code>/site/sessions</code> bestaat niet of heeft geen schrijfrechten", "installation.issues.sessions": "De map <code>/site/sessions</code> bestaat niet of heeft geen schrijfrechten",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Musisz dodać co najmniej jeden blok", "error.blocks.min.singular": "Musisz dodać co najmniej jeden blok",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Nie udało się załadować wzorca wiadomości e-mail \"{name}\"", "error.email.preset.notFound": "Nie udało się załadować wzorca wiadomości e-mail \"{name}\"",
"error.field.converter.invalid": "Nieprawidłowy konwerter \"{converter}\"", "error.field.converter.invalid": "Nieprawidłowy konwerter \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Nie można zainstalować panelu", "installation.issues.headline": "Nie można zainstalować panelu",
"installation.issues.mbstring": "Wymagane jest rozszerzenie <code>MB String</code>", "installation.issues.mbstring": "Wymagane jest rozszerzenie <code>MB String</code>",
"installation.issues.media": "Folder <code>/media</code> nie istnieje lub nie ma uprawnień do zapisu", "installation.issues.media": "Folder <code>/media</code> nie istnieje lub nie ma uprawnień do zapisu",
"installation.issues.php": "Upewnij się, że używasz <code>PHP 7+</code>", "installation.issues.php": "Upewnij się, że używasz <code>PHP 8+</code>",
"installation.issues.server": "Kirby wymaga <code>Apache</code>, <code>Nginx</code> lub <code>Caddy</code>", "installation.issues.server": "Kirby wymaga <code>Apache</code>, <code>Nginx</code> lub <code>Caddy</code>",
"installation.issues.sessions": "Folder <code>/site/sessions</code> nie istnieje lub nie ma uprawnień do zapisu", "installation.issues.sessions": "Folder <code>/site/sessions</code> nie istnieje lub nie ma uprawnień do zapisu",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Você deve adicionar pelo menos um bloco", "error.blocks.min.singular": "Você deve adicionar pelo menos um bloco",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Pré-configuração de email \"{name}\" não foi encontrada", "error.email.preset.notFound": "Pré-configuração de email \"{name}\" não foi encontrada",
"error.field.converter.invalid": "Conversor \"{converter}\" inválido", "error.field.converter.invalid": "Conversor \"{converter}\" inválido",
@@ -320,7 +322,7 @@
"installation.issues.headline": "O painel não pôde ser instalado", "installation.issues.headline": "O painel não pôde ser instalado",
"installation.issues.mbstring": "A extensão <code>MB String</code> é necessária", "installation.issues.mbstring": "A extensão <code>MB String</code> é necessária",
"installation.issues.media": "A pasta <code>/media</code> não existe ou não possui permissão de escrita", "installation.issues.media": "A pasta <code>/media</code> não existe ou não possui permissão de escrita",
"installation.issues.php": "Certifique-se que você está usando o <code>PHP 7+</code>", "installation.issues.php": "Certifique-se que você está usando o <code>PHP 8+</code>",
"installation.issues.server": "Kirby necessita do <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>", "installation.issues.server": "Kirby necessita do <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
"installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não possui permissão de escrita", "installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não possui permissão de escrita",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Você deve adicionar pelo menos um bloco", "error.blocks.min.singular": "Você deve adicionar pelo menos um bloco",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Preset de email \"{name}\" não encontrado", "error.email.preset.notFound": "Preset de email \"{name}\" não encontrado",
"error.field.converter.invalid": "Conversor \"{converter}\" inválido", "error.field.converter.invalid": "Conversor \"{converter}\" inválido",
@@ -320,7 +322,7 @@
"installation.issues.headline": "O painel não pôde ser instalado", "installation.issues.headline": "O painel não pôde ser instalado",
"installation.issues.mbstring": "A extensão <code>MB String</code> é necessária", "installation.issues.mbstring": "A extensão <code>MB String</code> é necessária",
"installation.issues.media": "A pasta <code>/media</code> não existe ou não possui permissão de escrita", "installation.issues.media": "A pasta <code>/media</code> não existe ou não possui permissão de escrita",
"installation.issues.php": "Certifique-se que está a usar o <code>PHP 7+</code>", "installation.issues.php": "Certifique-se que você está usando o <code>PHP 8+</code>",
"installation.issues.server": "O Kirby necessita do <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>", "installation.issues.server": "O Kirby necessita do <code>Apache</code>, <code>Nginx</code> ou <code>Caddy</code>",
"installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não possui permissão de escrita", "installation.issues.sessions": "A pasta <code>/site/sessions</code> não existe ou não possui permissão de escrita",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Вы должны добавить хотя бы один блок", "error.blocks.min.singular": "Вы должны добавить хотя бы один блок",
"error.blocks.validation": "Ошибка в поле \"{field}\" в блоке {index} типа \"{fieldset}\"", "error.blocks.validation": "Ошибка в поле \"{field}\" в блоке {index} типа \"{fieldset}\"",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "Шаблон эл. почты \"{name}\" не найден", "error.email.preset.notFound": "Шаблон эл. почты \"{name}\" не найден",
"error.field.converter.invalid": "Неверный конвертер \"{converter}\"", "error.field.converter.invalid": "Неверный конвертер \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Не удалось установить панель", "installation.issues.headline": "Не удалось установить панель",
"installation.issues.mbstring": "Расширение <code>MB String</code> необходимо", "installation.issues.mbstring": "Расширение <code>MB String</code> необходимо",
"installation.issues.media": "Каталог <code>/media</code> не существует или нет прав записи", "installation.issues.media": "Каталог <code>/media</code> не существует или нет прав записи",
"installation.issues.php": "Убедитесь, что используется <code>PHP 7+</code>", "installation.issues.php": "Убедитесь, что используется <code>PHP 8+</code>",
"installation.issues.server": "Kirby требует <code>Apache</code>, <code>Nginx</code> или <code>Caddy</code> ", "installation.issues.server": "Kirby требует <code>Apache</code>, <code>Nginx</code> или <code>Caddy</code> ",
"installation.issues.sessions": "Каталог <code>/site/sessions</code> не существует или нет прав записи", "installation.issues.sessions": "Каталог <code>/site/sessions</code> не существует или нет прав записи",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "You must add at least one block", "error.blocks.min.singular": "You must add at least one block",
"error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type", "error.blocks.validation": "There's an error on the \"{field}\" field in block {index} using the \"{fieldset}\" block type",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "E-mailovú predvoľbu \"{name}\" nie je možné nájsť", "error.email.preset.notFound": "E-mailovú predvoľbu \"{name}\" nie je možné nájsť",
"error.field.converter.invalid": "Neplatný converter \"{converter}\"", "error.field.converter.invalid": "Neplatný converter \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Panel nie je možné naištalovať", "installation.issues.headline": "Panel nie je možné naištalovať",
"installation.issues.mbstring": "<code>MB String</code> rozšírenie je povinné", "installation.issues.mbstring": "<code>MB String</code> rozšírenie je povinné",
"installation.issues.media": "Priečinok <code>/media</code> neexistuje alebo nie je nastavený ako zapisovateľný", "installation.issues.media": "Priečinok <code>/media</code> neexistuje alebo nie je nastavený ako zapisovateľný",
"installation.issues.php": "Uistite sa, že používate <code>PHP 7+</code>", "installation.issues.php": "Uistite sa, že používate <code>PHP 8+</code>",
"installation.issues.server": "Kirby vyžaduje <code>Apache</code>, <code>Nginx</code> alebo <code>Caddy</code>", "installation.issues.server": "Kirby vyžaduje <code>Apache</code>, <code>Nginx</code> alebo <code>Caddy</code>",
"installation.issues.sessions": "Priečinok <code>/site/sessions</code> neexistuje alebo nie je nastavený ako zapisovateľný", "installation.issues.sessions": "Priečinok <code>/site/sessions</code> neexistuje alebo nie je nastavený ako zapisovateľný",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "Du måste lägga till minst ett block", "error.blocks.min.singular": "Du måste lägga till minst ett block",
"error.blocks.validation": "Det finns ett fel i fältet \"{field}\" i block {index} med blocktypen \"{fieldset}\"", "error.blocks.validation": "Det finns ett fel i fältet \"{field}\" i block {index} med blocktypen \"{fieldset}\"",
"error.cache.type.invalid": "Invalid cache type \"{type}\"",
"error.email.preset.notFound": "E-postförinställningen \"{name}\" kan inte hittas", "error.email.preset.notFound": "E-postförinställningen \"{name}\" kan inte hittas",
"error.field.converter.invalid": "Ogiltig omvandlare \"{converter}\"", "error.field.converter.invalid": "Ogiltig omvandlare \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Panelen kan inte installeras", "installation.issues.headline": "Panelen kan inte installeras",
"installation.issues.mbstring": "Tillägget <code>MB String</code> krävs", "installation.issues.mbstring": "Tillägget <code>MB String</code> krävs",
"installation.issues.media": "Mappen <code>/media</code> finns inte eller är inte skrivbar", "installation.issues.media": "Mappen <code>/media</code> finns inte eller är inte skrivbar",
"installation.issues.php": "Se till att du använder <code>PHP 7+</code>", "installation.issues.php": "Se till att du använder <code>PHP 8+</code>",
"installation.issues.server": "Kirby kräver <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>", "installation.issues.server": "Kirby kräver <code>Apache</code>, <code>Nginx</code> eller <code>Caddy</code>",
"installation.issues.sessions": "Mappen <code>/site/sessions</code> finns inte eller är inte skrivbar", "installation.issues.sessions": "Mappen <code>/site/sessions</code> finns inte eller är inte skrivbar",

View File

@@ -72,6 +72,8 @@
"error.blocks.min.singular": "En az bir blok eklemelisiniz", "error.blocks.min.singular": "En az bir blok eklemelisiniz",
"error.blocks.validation": "\"{fieldset}\" blok türünü kullanan {index}. bloktaki \"{field}\" alanında bir hata var", "error.blocks.validation": "\"{fieldset}\" blok türünü kullanan {index}. bloktaki \"{field}\" alanında bir hata var",
"error.cache.type.invalid": "Geçersiz önbellek türü \"{type}\"",
"error.email.preset.notFound": "\"{name}\" e-posta adresi bulunamadı", "error.email.preset.notFound": "\"{name}\" e-posta adresi bulunamadı",
"error.field.converter.invalid": "Geçersiz dönüştürücü \"{converter}\"", "error.field.converter.invalid": "Geçersiz dönüştürücü \"{converter}\"",
@@ -320,7 +322,7 @@
"installation.issues.headline": "Panel kurulamadı", "installation.issues.headline": "Panel kurulamadı",
"installation.issues.mbstring": "<code>MB String</code> eklentisi gerekli", "installation.issues.mbstring": "<code>MB String</code> eklentisi gerekli",
"installation.issues.media": "<code>/media</code> klasörü yok yada yazılamaz", "installation.issues.media": "<code>/media</code> klasörü yok yada yazılamaz",
"installation.issues.php": "<code>PHP 7+</code> kullandığınızdan emin olun. ", "installation.issues.php": "<code>PHP 8+</code> kullandığınızdan emin olun. ",
"installation.issues.server": "Kirby <code>Apache</code>, <code>Nginx</code> veya <code>Caddy</code> gerektirir", "installation.issues.server": "Kirby <code>Apache</code>, <code>Nginx</code> veya <code>Caddy</code> gerektirir",
"installation.issues.sessions": "<code>/site/sessions</code> klasörü mevcut değil veya yazılabilir değil", "installation.issues.sessions": "<code>/site/sessions</code> klasörü mevcut değil veya yazılabilir değil",

File diff suppressed because one or more lines are too long

View File

@@ -1612,13 +1612,11 @@ class App
* Uses the snippet component to create * Uses the snippet component to create
* and return a template snippet * and return a template snippet
* *
* @param mixed $name
* @param array|object $data Variables or an object that becomes `$item` * @param array|object $data Variables or an object that becomes `$item`
* @param bool $return On `false`, directly echo the snippet * @param bool $return On `false`, directly echo the snippet
* @return string|null
* @psalm-return ($return is true ? string : null) * @psalm-return ($return is true ? string : null)
*/ */
public function snippet($name, $data = [], bool $return = true, bool $slots = false): Snippet|string|null public function snippet(string|array|null $name, $data = [], bool $return = true, bool $slots = false): Snippet|string|null
{ {
if (is_object($data) === true) { if (is_object($data) === true) {
$data = ['item' => $data]; $data = ['item' => $data];

View File

@@ -44,7 +44,7 @@ trait AppCaches
if (array_key_exists($type, $types) === false) { if (array_key_exists($type, $types) === false) {
throw new InvalidArgumentException([ throw new InvalidArgumentException([
'key' => 'app.invalid.cacheType', 'key' => 'cache.type.invalid',
'data' => ['type' => $type] 'data' => ['type' => $type]
]); ]);
} }
@@ -57,7 +57,7 @@ trait AppCaches
// check if it is a usable cache object // check if it is a usable cache object
if ($cache instanceof Cache === false) { if ($cache instanceof Cache === false) {
throw new InvalidArgumentException([ throw new InvalidArgumentException([
'key' => 'app.invalid.cacheType', 'key' => 'cache.type.invalid',
'data' => ['type' => $type] 'data' => ['type' => $type]
]); ]);
} }

View File

@@ -19,21 +19,57 @@ use Kirby\Toolkit\Str;
class Helpers class Helpers
{ {
/** /**
* Triggers a deprecation warning if debug mode is active * Allows to disable specific deprecation warnings
* by setting them to `false`.
* You can do this by putting the following code in
* `site/config/config.php`:
* *
* @param string $message * ```php
* Helpers::$deprecations['<deprecation-key>'] = false;
* ```
*/
public static $deprecations = [
// Passing the $slot or $slots variables to snippets is
// deprecated and will break in a future version.
'snippet-pass-slots' => true,
// The `Toolkit\Query` class has been deprecated and will
// be removed in a future version. Use `Query\Query` instead:
// Kirby\Query\Query::factory($query)->resolve($data).
'toolkit-query-class' => true,
// Passing an empty string as value to `Xml::attr()` has been
// deprecated. In a future version, passing an empty string won't
// omit the attribute anymore but render it with an empty value.
// To omit the attribute, please pass `null`.
'xml-attr-empty-string' => false,
];
/**
* Triggers a deprecation warning if debug mode is active
* and warning has not been surpressed via `Helpers::$deprecations`
*
* @param string|null $key If given, the key will be checked against the static array
* @return bool Whether the warning was triggered * @return bool Whether the warning was triggered
*/ */
public static function deprecated(string $message): bool public static function deprecated(string $message, string|null $key = null): bool
{ {
// only trigger warning in debug mode or when running PHPUnit tests
// @codeCoverageIgnoreStart
if ( if (
App::instance()->option('debug') === true || App::instance()->option('debug') !== true &&
(defined('KIRBY_TESTING') === true && KIRBY_TESTING === true) (defined('KIRBY_TESTING') !== true || KIRBY_TESTING !== true)
) { ) {
return trigger_error($message, E_USER_DEPRECATED) === true; return false;
}
// @codeCoverageIgnoreEnd
// don't trigger the warning if disabled by default or by the dev
if ($key !== null && (static::$deprecations[$key] ?? true) === false) {
return false;
} }
return false; return trigger_error($message, E_USER_DEPRECATED) === true;
} }
/** /**

View File

@@ -217,9 +217,6 @@ class Cookie
{ {
// lazily request the instance for non-CMS use cases // lazily request the instance for non-CMS use cases
$kirby = App::instance(null, true); $kirby = App::instance(null, true);
$kirby?->response()->usesCookie($key);
if ($kirby) {
$kirby->response()->usesCookie($key);
}
} }
} }

View File

@@ -152,7 +152,7 @@ class Environment
*/ */
public function detect(array $options = null, array $info = null): array public function detect(array $options = null, array $info = null): array
{ {
$info ??= $_SERVER; $info ??= $_SERVER;
$options = array_merge([ $options = array_merge([
'cli' => null, 'cli' => null,
'allowed' => null 'allowed' => null
@@ -922,7 +922,7 @@ class Environment
protected function sanitizeScriptPath(string|null $scriptPath = null): string protected function sanitizeScriptPath(string|null $scriptPath = null): string
{ {
$scriptPath ??= ''; $scriptPath ??= '';
$scriptPath = trim($scriptPath); $scriptPath = trim($scriptPath);
// skip all the sanitizing steps if the path is empty // skip all the sanitizing steps if the path is empty
if ($scriptPath === '') { if ($scriptPath === '') {

View File

@@ -101,8 +101,11 @@ class Header
* *
* @return string|void * @return string|void
*/ */
public static function type(string $mime, string $charset = 'UTF-8', bool $send = true) public static function type(
{ string $mime,
string $charset = 'UTF-8',
bool $send = true
) {
return static::contentType($mime, $charset, $send); return static::contentType($mime, $charset, $send);
} }
@@ -118,17 +121,25 @@ class Header
* @return string|void * @return string|void
* @psalm-return ($send is false ? string : void) * @psalm-return ($send is false ? string : void)
*/ */
public static function status(int|string|null $code = null, bool $send = true) public static function status(
{ int|string|null $code = null,
bool $send = true
) {
$codes = static::$codes; $codes = static::$codes;
$protocol = Environment::getGlobally('SERVER_PROTOCOL', 'HTTP/1.1'); $protocol = Environment::getGlobally('SERVER_PROTOCOL', 'HTTP/1.1');
// allow full control over code and message // allow full control over code and message
if (is_string($code) === true && preg_match('/^\d{3} \w.+$/', $code) === 1) { if (
is_string($code) === true &&
preg_match('/^\d{3} \w.+$/', $code) === 1
) {
$message = substr(rtrim($code), 4); $message = substr(rtrim($code), 4);
$code = substr($code, 0, 3); $code = substr($code, 0, 3);
} else { } else {
$code = array_key_exists('_' . $code, $codes) === false ? 500 : $code; if (array_key_exists('_' . $code, $codes) === false) {
$code = 500;
}
$message = $codes['_' . $code] ?? 'Something went wrong'; $message = $codes['_' . $code] ?? 'Something went wrong';
} }

View File

@@ -120,8 +120,10 @@ class Params extends Obj
* Converts the params object to a params string * Converts the params object to a params string
* which can then be used in the URL builder again * which can then be used in the URL builder again
*/ */
public function toString(bool $leadingSlash = false, bool $trailingSlash = false): string public function toString(
{ bool $leadingSlash = false,
bool $trailingSlash = false
): string {
if ($this->isEmpty() === true) { if ($this->isEmpty() === true) {
return ''; return '';
} }

View File

@@ -31,8 +31,10 @@ class Path extends Collection
return $this->toString(); return $this->toString();
} }
public function toString(bool $leadingSlash = false, bool $trailingSlash = false): string public function toString(
{ bool $leadingSlash = false,
bool $trailingSlash = false
): string {
if (empty($this->data) === true) { if (empty($this->data) === true) {
return ''; return '';
} }

View File

@@ -91,7 +91,13 @@ class Remote
public static function __callStatic(string $method, array $arguments = []): static public static function __callStatic(string $method, array $arguments = []): static
{ {
return new static($arguments[0], array_merge(['method' => strtoupper($method)], $arguments[1] ?? [])); return new static(
url: $arguments[0],
options: array_merge(
['method' => strtoupper($method)],
$arguments[1] ?? []
)
);
} }
/** /**
@@ -176,10 +182,10 @@ class Remote
$headers = []; $headers = [];
foreach ($this->options['headers'] as $key => $value) { foreach ($this->options['headers'] as $key => $value) {
if (is_string($key) === true) { if (is_string($key) === true) {
$headers[] = $key . ': ' . $value; $value = $key . ': ' . $value;
} else {
$headers[] = $value;
} }
$headers[] = $value;
} }
$this->curlopt[CURLOPT_HTTPHEADER] = $headers; $this->curlopt[CURLOPT_HTTPHEADER] = $headers;
@@ -264,7 +270,10 @@ class Remote
$query = http_build_query($options['data']); $query = http_build_query($options['data']);
if (empty($query) === false) { if (empty($query) === false) {
$url = Url::hasQuery($url) === true ? $url . '&' . $query : $url . '?' . $query; $url = match (Url::hasQuery($url)) {
true => $url . '&' . $query,
default => $url . '?' . $query
};
} }
// remove the data array from the options // remove the data array from the options

View File

@@ -147,9 +147,7 @@ class Request
// this ensures that the response is only cached for // this ensures that the response is only cached for
// unauthenticated visitors; // unauthenticated visitors;
// https://github.com/getkirby/kirby/issues/4423#issuecomment-1166300526 // https://github.com/getkirby/kirby/issues/4423#issuecomment-1166300526
if ($kirby) { $kirby?->response()->usesAuth(true);
$kirby->response()->usesAuth(true);
}
if ($auth = $this->authString()) { if ($auth = $this->authString()) {
$type = Str::lower(Str::before($auth, ' ')); $type = Str::lower(Str::before($auth, ' '));
@@ -292,7 +290,10 @@ class Request
$headers = []; $headers = [];
foreach (Environment::getGlobally() as $key => $value) { foreach (Environment::getGlobally() as $key => $value) {
if (substr($key, 0, 5) !== 'HTTP_' && substr($key, 0, 14) !== 'REDIRECT_HTTP_') { if (
substr($key, 0, 5) !== 'HTTP_' &&
substr($key, 0, 14) !== 'REDIRECT_HTTP_'
) {
continue; continue;
} }

View File

@@ -50,8 +50,13 @@ class Response
/** /**
* Creates a new response object * Creates a new response object
*/ */
public function __construct(string|array $body = '', string|null $type = null, int|null $code = null, array|null $headers = null, string|null $charset = null) public function __construct(
{ string|array $body = '',
string|null $type = null,
int|null $code = null,
array|null $headers = null,
string|null $charset = null
) {
// array construction // array construction
if (is_array($body) === true) { if (is_array($body) === true) {
$params = $body; $params = $body;
@@ -127,8 +132,11 @@ class Response
* *
* @param array $props Custom overrides for response props (e.g. headers) * @param array $props Custom overrides for response props (e.g. headers)
*/ */
public static function download(string $file, string|null $filename = null, array $props = []): static public static function download(
{ string $file,
string|null $filename = null,
array $props = []
): static {
if (file_exists($file) === false) { if (file_exists($file) === false) {
throw new Exception('The file could not be found'); throw new Exception('The file could not be found');
} }
@@ -224,8 +232,12 @@ class Response
* Creates a json response with appropriate * Creates a json response with appropriate
* header and automatic conversion of arrays. * header and automatic conversion of arrays.
*/ */
public static function json(string|array $body = '', int|null $code = null, bool|null $pretty = null, array $headers = []): static public static function json(
{ string|array $body = '',
int|null $code = null,
bool|null $pretty = null,
array $headers = []
): static {
if (is_array($body) === true) { if (is_array($body) === true) {
$body = json_encode($body, $pretty === true ? JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES : 0); $body = json_encode($body, $pretty === true ? JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES : 0);
} }

View File

@@ -72,8 +72,12 @@ class Route
* Creates a new Route object for the given * Creates a new Route object for the given
* pattern(s), method(s) and the callback action * pattern(s), method(s) and the callback action
*/ */
public function __construct(string $pattern, string $method, Closure $action, array $attributes = []) public function __construct(
{ string $pattern,
string $method,
Closure $action,
array $attributes = []
) {
$this->action = $action; $this->action = $action;
$this->attributes = $attributes; $this->attributes = $attributes;
$this->method = $method; $this->method = $method;

View File

@@ -117,7 +117,10 @@ class Router
if ($callback) { if ($callback) {
$result = $callback($route); $result = $callback($route);
} else { } else {
$result = $route->action()->call($route, ...$route->arguments()); $result = $route->action()->call(
$route,
...$route->arguments()
);
} }
$loop = false; $loop = false;
@@ -139,8 +142,12 @@ class Router
* the routing action immediately * the routing action immediately
* @since 3.7.0 * @since 3.7.0
*/ */
public static function execute(string|null $path = null, string $method = 'GET', array $routes = [], Closure|null $callback = null) public static function execute(
{ string|null $path = null,
string $method = 'GET',
array $routes = [],
Closure|null $callback = null
) {
return (new static($routes))->call($path, $method, $callback); return (new static($routes))->call($path, $method, $callback);
} }
@@ -150,8 +157,11 @@ class Router
* find matches and return all the found * find matches and return all the found
* arguments in the path. * arguments in the path.
*/ */
public function find(string $path, string $method, array|null $ignore = null): Route public function find(
{ string $path,
string $method,
array|null $ignore = null
): Route {
if (isset($this->routes[$method]) === false) { if (isset($this->routes[$method]) === false) {
throw new InvalidArgumentException('Invalid routing method: ' . $method, 400); throw new InvalidArgumentException('Invalid routing method: ' . $method, 400);
} }
@@ -163,7 +173,10 @@ class Router
$arguments = $route->parse($route->pattern(), $path); $arguments = $route->parse($route->pattern(), $path);
if ($arguments !== false) { if ($arguments !== false) {
if (empty($ignore) === true || in_array($route, $ignore) === false) { if (
empty($ignore) === true ||
in_array($route, $ignore) === false
) {
return $this->route = $route; return $this->route = $route;
} }
} }

View File

@@ -227,7 +227,10 @@ class Uri
$domain .= $this->host; $domain .= $this->host;
if ($this->port !== null && in_array($this->port, [80, 443]) === false) { if (
$this->port !== null &&
in_array($this->port, [80, 443]) === false
) {
$domain .= ':' . $this->port; $domain .= ':' . $this->port;
} }

View File

@@ -30,7 +30,8 @@ class Url
*/ */
public static function __callStatic(string $method, array $arguments) public static function __callStatic(string $method, array $arguments)
{ {
return (new Uri($arguments[0] ?? static::current()))->$method(...array_slice($arguments, 1)); $uri = new Uri($arguments[0] ?? static::current());
return $uri->$method(...array_slice($arguments, 1));
} }
/** /**
@@ -65,7 +66,11 @@ class Url
public static function fix(string|null $url = null): string|null public static function fix(string|null $url = null): string|null
{ {
// make sure to not touch absolute urls // make sure to not touch absolute urls
return (!preg_match('!^(https|http|ftp)\:\/\/!i', $url ?? '')) ? 'http://' . $url : $url; if (!preg_match('!^(https|http|ftp)\:\/\/!i', $url ?? '')) {
return 'http://' . $url;
}
return $url;
} }
/** /**
@@ -93,7 +98,9 @@ class Url
// //example.com/uri // //example.com/uri
// http://example.com/uri, https://example.com/uri, ftp://example.com/uri // http://example.com/uri, https://example.com/uri, ftp://example.com/uri
// mailto:example@example.com, geo:49.0158,8.3239?z=11 // mailto:example@example.com, geo:49.0158,8.3239?z=11
return $url !== null && preg_match('!^(//|[a-z0-9+-.]+://|mailto:|tel:|geo:)!i', $url) === 1; return
$url !== null &&
preg_match('!^(//|[a-z0-9+-.]+://|mailto:|tel:|geo:)!i', $url) === 1;
} }
/** /**
@@ -127,8 +134,11 @@ class Url
/** /**
* Returns the path for the given url * Returns the path for the given url
*/ */
public static function path(string|array|null $url = null, bool $leadingSlash = false, bool $trailingSlash = false): string public static function path(
{ string|array|null $url = null,
bool $leadingSlash = false,
bool $trailingSlash = false
): string {
return Url::toObject($url)->path()->toString($leadingSlash, $trailingSlash); return Url::toObject($url)->path()->toString($leadingSlash, $trailingSlash);
} }
@@ -151,8 +161,12 @@ class Url
/** /**
* Shortens the Url by removing all unnecessary parts * Shortens the Url by removing all unnecessary parts
*/ */
public static function short(string|null $url = null, int $length = 0, bool $base = false, string $rep = '…'): string public static function short(
{ string|null $url = null,
int $length = 0,
bool $base = false,
string $rep = '…'
): string {
$uri = static::toObject($url); $uri = static::toObject($url);
$uri->fragment = null; $uri->fragment = null;

View File

@@ -153,11 +153,14 @@ class Snippet extends Tpl
* or the template string for self-enclosed snippets * or the template string for self-enclosed snippets
*/ */
public static function factory( public static function factory(
string|array $name, string|array|null $name,
array $data = [], array $data = [],
bool $slots = false bool $slots = false
): static|string { ): static|string {
$file = static::file($name); // instead of returning empty string when `$name` is null
// allow rest of code to run, otherwise the wrong snippet would be closed
// and potential issues for nested snippets may occur
$file = $name !== null ? static::file($name) : null;
// for snippets with slots, make sure to open a new // for snippets with slots, make sure to open a new
// snippet and start capturing slots // snippet and start capturing slots
@@ -309,7 +312,7 @@ class Snippet extends Tpl
array_key_exists('slot', $data) === true || array_key_exists('slot', $data) === true ||
array_key_exists('slots', $data) === true array_key_exists('slots', $data) === true
) { ) {
Helpers::deprecated('Passing the $slot or $slots variables to snippets is deprecated and will break in Kirby 3.10.'); Helpers::deprecated('Passing the $slot or $slots variables to snippets is deprecated and will break in a future version.', 'snippet-pass-slots');
} }
// @codeCoverageIgnoreEnd // @codeCoverageIgnoreEnd

View File

@@ -58,7 +58,7 @@ class Query
$this->query = $query; $this->query = $query;
$this->data = $data; $this->data = $data;
Helpers::deprecated('The `Toolkit\Query` class has been deprecated and will be removed in a future version. Use `Query\Query` instead: Kirby\Query\Query::factory($query)->resolve($data).'); Helpers::deprecated('The `Toolkit\Query` class has been deprecated and will be removed in a future version. Use `Query\Query` instead: Kirby\Query\Query::factory($query)->resolve($data).', 'toolkit-query-class');
} }
/** /**

View File

@@ -97,7 +97,7 @@ class Xml
// TODO: Remove in 3.10 // TODO: Remove in 3.10
// @codeCoverageIgnoreStart // @codeCoverageIgnoreStart
if ($value === '') { if ($value === '') {
Helpers::deprecated('Passing an empty string as value to `Xml::attr()` has been deprecated. In a future version, passing an empty string won\'t omit the attribute anymore but render it with an empty value. To omit the attribute, please pass `null`.'); Helpers::deprecated('Passing an empty string as value to `Xml::attr()` has been deprecated. In a future version, passing an empty string won\'t omit the attribute anymore but render it with an empty value. To omit the attribute, please pass `null`.', 'xml-attr-empty-string');
} }
// @codeCoverageIgnoreEnd // @codeCoverageIgnoreEnd

View File

@@ -1,8 +1,8 @@
<?php return array( <?php return array(
'root' => array( 'root' => array(
'name' => 'getkirby/cms', 'name' => 'getkirby/cms',
'pretty_version' => '3.9.0', 'pretty_version' => '3.9.1',
'version' => '3.9.0.0', 'version' => '3.9.1.0',
'reference' => NULL, 'reference' => NULL,
'type' => 'kirby-cms', 'type' => 'kirby-cms',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',
@@ -38,8 +38,8 @@
'dev_requirement' => false, 'dev_requirement' => false,
), ),
'getkirby/cms' => array( 'getkirby/cms' => array(
'pretty_version' => '3.9.0', 'pretty_version' => '3.9.1',
'version' => '3.9.0.0', 'version' => '3.9.1.0',
'reference' => NULL, 'reference' => NULL,
'type' => 'kirby-cms', 'type' => 'kirby-cms',
'install_path' => __DIR__ . '/../../', 'install_path' => __DIR__ . '/../../',