Upgrade to 3.3.1

This commit is contained in:
Bastian Allgeier
2019-11-26 11:04:08 +01:00
parent 23c67beafb
commit 3a82406bed
156 changed files with 437 additions and 121 deletions

View File

@@ -1,7 +1,7 @@
{
"name": "getkirby/cms",
"description": "The Kirby 3 core",
"version": "3.3.0",
"version": "3.3.1",
"license": "proprietary",
"keywords": ["kirby", "cms", "core"],
"homepage": "https://getkirby.com",

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",
"This file is @generated automatically"
],
"content-hash": "b6f220540a714bd27218b0fea5f2aad6",
"content-hash": "e10295fa58c27caa37474e7fa503bb8e",
"packages": [
{
"name": "claviska/simpleimage",

View File

@@ -25,7 +25,7 @@ return [
/**
* Allowed incremental steps between numbers (i.e `0.5`)
*/
'step' => function ($step = 1) {
'step' => function ($step = null) {
return $this->toNumber($step);
},
'value' => function ($value = null) {

View File

@@ -122,6 +122,7 @@ function css($url, $options = null): ?string
/**
* Triggers a deprecation warning if debug mode is active
* @since 3.3.0
*
* @param string $message
* @return bool Whether the warning was triggered

View File

@@ -327,6 +327,7 @@ return function (App $app) {
/**
* Converts all line breaks in the field content to `<br>` tags.
* @since 3.3.0
*
* @param \Kirby\Cms\Field $field
* @return \Kirby\Cms\Field
@@ -387,6 +388,7 @@ return function (App $app) {
* Strips all block-level HTML elements from the field value,
* it can be safely placed inside of other inline elements
* without the risk of breaking the HTML structure.
* @since 3.3.0
*
* @param \Kirby\Cms\Field $field
* @return \Kirby\Cms\Field

View File

@@ -61,13 +61,21 @@
"Файловото разширение \"{extension}\" не е позволено",
"error.file.extension.missing":
"Липсва файлово разширение за файла \"{filename}\"",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Каченият файл трябва да бъде от същия mime тип \"{mime}\"",
"error.file.mime.forbidden": "The media type \"{mime}\" is not allowed",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"The media type for \"{filename}\" cannot be detected",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Името на файла е задължително",
"error.file.notFound": "Файлът \"{filename}\" не може да бъде намерен",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Не е позволен ъплоуда на файлове от тип {type}",
"error.file.undefined": "\u0424\u0430\u0439\u043b\u044a\u0442 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d",
@@ -422,6 +430,7 @@
"translation.author": "Kirby екип",
"translation.direction": "ltr",
"translation.name": "Български",
"translation.locale": "bg_BG",
"upload": "Прикачи",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"L'extensió de l'arxiu \"{extension}\" no està permesa",
"error.file.extension.missing":
"Falta l'extensió de l'arxiu \"{filename}\"",
"error.file.maxheight": "L'alçada de la imatge no ha de ser superior a {height} píxels",
"error.file.maxsize": "El fitxer és massa gran",
"error.file.maxwidth": "L'amplada de la imatge no ha de ser superior a {width} píxels",
"error.file.mime.differs":
"L'arxiu carregat ha ha de ser del mateix tipus de mime \"{mime}\"",
"error.file.mime.forbidden": "El tipus de mitjà \"{mime}\" no està permès",
"error.file.mime.invalid": "Mime type no vàlid: {mime}",
"error.file.mime.missing":
"El tipus de suport per a \"{filename}\" no es pot detectar",
"error.file.minheight": "L'alçada de la imatge ha de ser com a mínim de {height} píxels",
"error.file.minsize": "El fitxer és massa petit",
"error.file.minwidth": "L'amplada de la imatge ha de ser com a mínim de {width} píxels",
"error.file.name.missing": "El nom del fitxer no pot estar buit",
"error.file.notFound": "L'arxiu \"{filename}\" no s'ha trobat",
"error.file.orientation": "Lorientació de la imatge ha de ser \"{orientation}\"",
"error.file.type.forbidden": "No tens permís per penjar fitxers {type}",
"error.file.undefined": "L'arxiu no s'ha trobat",
@@ -422,6 +430,7 @@
"translation.author": "Equip Kirby",
"translation.direction": "ltr",
"translation.name": "Catalan",
"translation.locale": "ca_ES",
"upload": "Carregar",
"upload.error.cantMove": "El fitxer carregat no s'ha pogut moure",

View File

@@ -61,13 +61,21 @@
"Přípona souboru \"{extension}\" není povolena",
"error.file.extension.missing":
"Nem\u016f\u017eete nahr\u00e1t soubor bez p\u0159\u00edpony",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Nahraný soubor musí být stejného typu \"{mime}\"",
"error.file.mime.forbidden": "Soubor typu \"{mime}\" není povolený",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Nelze rozeznat mime typ souboru \"{filename}\"",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Název souboru nesmí být prázdný",
"error.file.notFound": "Soubor se nepoda\u0159ilo nal\u00e9zt",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Nemáte povoleno nahrávat soubory typu {type} ",
"error.file.undefined": "Soubor se nepoda\u0159ilo nal\u00e9zt",
@@ -223,7 +231,7 @@
"error.validation.time": "Zadejte prosím platný čas",
"error.validation.url": "Zadejte prosím platnou adresu URL",
"field.required": "The field is required",
"field.required": "Pole musí být vyplněno.",
"field.files.empty": "Nebyly zatím vybrány žádné soubory",
"field.pages.empty": "Nebyly zatím vybrány žádné stránky",
"field.structure.delete.confirm": "Opravdu chcete smazat tento z\u00e1znam?",
@@ -296,7 +304,7 @@
"loading": "Načítám",
"lock.unsaved": "Neuložené změny",
"lock.unsaved.empty": "There are no more unsaved changes",
"lock.unsaved.empty": "Nezbývají již žádné neuložené změny.",
"lock.isLocked": "Neuložené změny provedené <strong>{email}</strong>",
"lock.file.isLocked": "Soubor nelze změnit, právě jej upravuje {email}.",
"lock.page.isLocked": "Stránku nelze změnit, právě jí upravuje {email} .",
@@ -393,7 +401,7 @@
"save": "Ulo\u017eit",
"search": "Hledat",
"section.required": "The section is required",
"section.required": "Sekce musí být vyplněna",
"select": "Vybrat",
"settings": "Nastavení",
@@ -422,19 +430,20 @@
"translation.author": "Kirby tým",
"translation.direction": "ltr",
"translation.name": "\u010cesky",
"translation.locale": "cs_CZ",
"upload": "Nahrát",
"upload.error.cantMove": "Nahraný soubor nemohl být přesunut",
"upload.error.cantWrite": "Zápis souboru na disk se nezdařil",
"upload.error.default": "Soubor se nepodařilo nahrát",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",
"upload.error.noFiles": "No files were uploaded",
"upload.error.partial": "The uploaded file was only partially uploaded",
"upload.error.tmpDir": "Missing a temporary folder",
"upload.error.extension": "Nahrávání souboru přerušeno rozšířením.",
"upload.error.formSize": "Velikost nahrávaného souboru převyšuje omezení stanovené direktivou MAX_FILE_SIZE",
"upload.error.iniPostSize": "Velikost nahrávaného souboru převyšuje omezení stanovené direktivou post_max_size, která je nastavena v php.ini",
"upload.error.iniSize": "Velikost nahrávaného souboru převyšuje omezení stanovené direktivou upload_max_filesize, která je nastavena v php.ini ",
"upload.error.noFile": "Nebyl nahrán žádný soubor",
"upload.error.noFiles": "Nebyly nahrány žádné soubory",
"upload.error.partial": "Soubor byl nahrán pouze z části",
"upload.error.tmpDir": "Chybí dočasná složka",
"upload.errors": "Chyba",
"upload.progress": "Nahrávání...",

View File

@@ -61,13 +61,21 @@
"Uacceptabel fil-endelse",
"error.file.extension.missing":
"Du kan ikke uploade filer uden fil-endelse",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Den uploadede fil skal være af samme mime type \"{mime}\"",
"error.file.mime.forbidden": "Media typen \"{mime}\" er ikke tilladt",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Media typen for \"{filename}\" kan ikke bestemmes",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Filnavn må ikke være tomt",
"error.file.notFound": "Filen kunne ikke findes",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Du har ikke tilladelse til at uploade {type} filer",
"error.file.undefined": "Filen kunne ikke findes",
@@ -422,6 +430,7 @@
"translation.author": "Kirby Team",
"translation.direction": "ltr",
"translation.name": "Dansk",
"translation.locale": "da_DK",
"upload": "Upload",
"upload.error.cantMove": "Den uploadede fil kunne ikke flyttes",

View File

@@ -61,13 +61,21 @@
"Verbotene Dateiendung \"{extension}\"",
"error.file.extension.missing":
"Du kannst keine Dateien ohne Dateiendung hochladen",
"error.file.maxheight": "Die Bildhöhe darf {height} Pixel nicht überschreiten",
"error.file.maxsize": "Die Datei ist zu groß",
"error.file.maxwidth": "Die Bildbreite darf {height} Pixel nicht überschreiten",
"error.file.mime.differs":
"Die Datei muss den Medientyp \"{mime}\" haben.",
"error.file.mime.forbidden": "Der Medientyp \"{mime}\" ist nicht erlaubt",
"error.file.mime.invalid": "Ungültiger Dateityp: {mime}",
"error.file.mime.missing":
"Der Medientyp für \"{filename}\" konnte nicht erkannt werden",
"error.file.minheight": "Die Bildhöhe muss mindestens {height} Pixel betragen",
"error.file.minsize": "Die Datei ist zu klein",
"error.file.minwidth": "Die Bildbreite muss mindestens {height} Pixel betragen",
"error.file.name.missing": "Bitte gib einen Dateinamen an",
"error.file.notFound": "Die Datei \"{filename}\" konnte nicht gefunden werden",
"error.file.orientation": "Das Bildformat ist ungültig. Erwartetes Format: \"{orientation}\"",
"error.file.type.forbidden": "Du kannst keinen {type}-Dateien hochladen",
"error.file.undefined": "Die Datei konnte nicht gefunden werden",
@@ -422,6 +430,7 @@
"translation.author": "Kirby Team",
"translation.direction": "ltr",
"translation.name": "Deutsch",
"translation.locale": "de_DE",
"upload": "Hochladen",
"upload.error.cantMove": "Die Datei konnte nicht an ihren Zielort bewegt werden",

View File

@@ -61,13 +61,21 @@
"\u039c\u03b7 \u03b1\u03c0\u03bf\u03b4\u03b5\u03ba\u03c4\u03ae \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5",
"error.file.extension.missing":
"Λείπει η επέκταση για το \"{filename}\"",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Το αρχείο πρέπει να είναι του ίδιου τύπου mime \"{mime}\"",
"error.file.mime.forbidden": "Ο τύπος μέσου \"{mime}\" δεν επιτρέπεται",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Δεν είναι δυνατό να εντοπιστεί ο τύπος μέσου για το \"{filename}\"",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Το όνομα αρχείου δεν μπορεί να είναι άδειο",
"error.file.notFound": "Δεν είναι δυνατό να βρεθεί το αρχείο \"{filename}\"",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Δεν επιτρέπεται η μεταφόρτωση αρχείων {type}",
"error.file.undefined": "Δεν ήταν δυνατή η εύρεση του αρχείου",
@@ -422,6 +430,7 @@
"translation.author": "Ομάδα Kirby",
"translation.direction": "ltr",
"translation.name": "\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac",
"translation.locale": "el_GR",
"upload": "Μεταφόρτωση",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"The extension \"{extension}\" is not allowed",
"error.file.extension.missing":
"The extensions for \"{filename}\" is missing",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"The uploaded file must be of the same mime type \"{mime}\"",
"error.file.mime.forbidden": "The media type \"{mime}\" is not allowed",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"The media type for \"{filename}\" cannot be detected",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "The filename must not be empty",
"error.file.notFound": "The file \"{filename}\" cannot be found",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "You are not allowed to upload {type} files",
"error.file.undefined": "The file cannot be found",
@@ -422,6 +430,7 @@
"translation.author": "Kirby Team",
"translation.direction": "ltr",
"translation.name": "English",
"translation.locale": "en_US",
"upload": "Upload",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -23,22 +23,22 @@
"delete": "Eliminar",
"dimensions": "Dimensiones",
"disabled": "Disabled",
"disabled": "Desabilitado",
"discard": "Descartar",
"download": "Download",
"duplicate": "Duplicate",
"download": "Descargar",
"duplicate": "Duplicar",
"edit": "Editar",
"dialog.files.empty": "No files to select",
"dialog.pages.empty": "No pages to select",
"dialog.users.empty": "No users to select",
"dialog.files.empty": "No has seleccionado ningún archivo",
"dialog.pages.empty": "No has seleccionado ninguna página",
"dialog.users.empty": "No has seleccionado ningún usuario",
"email": "Correo Electrónico",
"email.placeholder": "correo@ejemplo.com",
"error.access.login": "Ingreso inválido",
"error.access.panel": "No tienes permitido acceder al panel.",
"error.access.view": "You are not allowed to access this part of the 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.delete.fail": "No se pudo eliminar la foto de perfil.",
@@ -53,7 +53,7 @@
"error.field.converter.invalid": "Convertidor inválido \"{converter}\"",
"error.file.changeName.empty": "The name must not be empty",
"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.duplicate": "Ya existe un archivo con el nombre \"{filename}\".",
@@ -61,26 +61,34 @@
"La extensión \"{extension}\" no está permitida.",
"error.file.extension.missing":
"Falta la extensión para \"{filename}\".",
"error.file.maxheight": "La altura de la imagen no debe exceder {height} pixeles",
"error.file.maxsize": "El archivo es muy grande",
"error.file.maxwidth": "El ancho de la imagen no debe exceder {width} pixeles",
"error.file.mime.differs":
"El archivo cargado debe ser del mismo tipo mime \"{mime}\".",
"error.file.mime.forbidden": "El tipo de medios \"{mime}\" no está permitido.",
"error.file.mime.invalid": "Tipo invalido de mime: {mime}",
"error.file.mime.missing":
"No se puede detectar el tipo de medio para \"{filename}\".",
"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.minwidth": "El ancho de la imagen debe ser de al menos {width} pixeles",
"error.file.name.missing": "El nombre del archivo no debe estar vacío.",
"error.file.notFound": "El archivo \"{filename}\" no pudo ser encontrado.",
"error.file.orientation": "La orientación de la imagen debe ser \"{orientation}\"",
"error.file.type.forbidden": "No está permitido subir archivos {type}.",
"error.file.undefined": "El archivo no se puede encontrar.",
"error.form.incomplete": "Por favor, corrige todos los errores del formulario...",
"error.form.notSaved": "No se pudo guardar el formulario.",
"error.language.code": "Please enter a valid code for the language",
"error.language.duplicate": "The language already exists",
"error.language.name": "Please enter a valid name for the language",
"error.language.code": "Por favor introduce un código válido para el lenguaje",
"error.language.duplicate": "El lenguaje ya existe",
"error.language.name": "Por favor introduce un nombre válido para el lenguaje",
"error.license.format": "Please enter a valid license key",
"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.verification": "The license could not be verified",
"error.license.verification": "La licencia no pude ser verificada",
"error.page.changeSlug.permission":
"No está permitido cambiar el apéndice de URL para \"{slug}\".",
@@ -107,7 +115,7 @@
"Ya existe un borrador de página con el apéndice de URL \"{slug}\"",
"error.page.duplicate":
"Ya existe una página con el apéndice de URL \"{slug}\"",
"error.page.duplicate.permission": "You are not allowed to duplicate \"{slug}\"",
"error.page.duplicate.permission": "No tienes permitido duplicar \"{slug}\"",
"error.page.notFound": "La página \"{slug}\" no se encuentra",
"error.page.num.invalid":
"Por favor, introduce un número de posición válido. Los números no deben ser negativos.",
@@ -122,18 +130,18 @@
"error.section.files.max.singular":
"No debes agregar más de un archivo a la sección \"{section}\"",
"error.section.files.min.plural":
"The \"{section}\" section requires at least {min} files",
"La sección \"{section}\" requiere al menos {min} archivos",
"error.section.files.min.singular":
"The \"{section}\" section requires at least one file",
"La sección \"{section}\" requiere al menos un archivo",
"error.section.pages.max.plural":
"No debes agregar más de {max} páginas 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":
"The \"{section}\" section requires at least {min} pages",
"La sección \"{section}\" requiere al menos {min} páginas",
"error.section.pages.min.singular":
"The \"{section}\" section requires at least one page",
"La sección \"{section}\" requiere al menos una página",
"error.section.notLoaded": "La sección \"{name}\" no se pudo cargar",
"error.section.type.invalid": "La sección \"{type}\" no es valida",
@@ -158,7 +166,7 @@
"error.user.changeRole.permission":
"No tienes permiso para cambiar el rol del usuario \"{name}\"",
"error.user.changeRole.toAdmin":
"You are not allowed to promote someone to the admin role",
"No tienes permitido promover a alguien al rol de admin",
"error.user.create.permission": "No tienes permiso de crear este usuario",
"error.user.delete": "El ususario no pudo ser eliminado",
"error.user.delete.lastAdmin": "Usted no puede borrar el \u00faltimo administrador",
@@ -188,9 +196,9 @@
"error.validation.contains":
"Por favor ingrese valores que contengan \"{needle}\"",
"error.validation.date": "Por favor ingresa una fecha válida",
"error.validation.date.after": "Please enter a date after {date}",
"error.validation.date.before": "Please enter a date before {date}",
"error.validation.date.between": "Please enter a date between {min} and {max}",
"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.between": "Por favor introduce un número entre {min} y {max}",
"error.validation.denied": "Por favor niegue",
"error.validation.different": "EL valor no debe ser \"{other}\"",
"error.validation.email": "Por favor ingresa un correo electrónico valido",
@@ -223,7 +231,7 @@
"error.validation.time": "Por favor ingresa una hora válida",
"error.validation.url": "Por favor ingresa un URL válido",
"field.required": "The field is required",
"field.required": "Este campo es requerido",
"field.files.empty": "Aún no ha seleccionado ningún archivo",
"field.pages.empty": "Aún no ha seleccionado ningúna pagina",
"field.structure.delete.confirm": "\u00bfEn realidad desea borrar esta entrada?",
@@ -271,7 +279,7 @@
"language.direction.ltr": "De Izquierda a derecha",
"language.direction.rtl": "De derecha a izquierda",
"language.locale": "Cadena de localización PHP",
"language.locale.warning": "You are using a custom locale set up. Please modify it in the language file in /site/languages",
"language.locale.warning": "Estas utilizando un configuración local. Por favor modifícalo en el archivo del lenguaje en /site/languages",
"language.name": "Nombre",
"language.updated": "El idioma a sido actualizado",
@@ -295,13 +303,13 @@
"loading": "Cargando",
"lock.unsaved": "Unsaved changes",
"lock.unsaved.empty": "There are no more unsaved changes",
"lock.isLocked": "Unsaved changes by <strong>{email}</strong>",
"lock.file.isLocked": "The file is currently being edited by {email} and cannot be changed.",
"lock.page.isLocked": "The page is currently being edited by {email} and cannot be changed.",
"lock.unlock": "Unlock",
"lock.isUnlocked": "Your unsaved changes have been overwritten by another user. You can download your changes to merge them manually.",
"lock.unsaved": "Cambios sin guardar",
"lock.unsaved.empty": "No hay más cambios sin guardar",
"lock.isLocked": "Cambios sin guardar por <strong>{email}</strong>",
"lock.file.isLocked": "El archivo está siendo actualmente editado por {email} y no puede ser cambiado.",
"lock.page.isLocked": "La página está siendo actualmente editada por {email} y no puede ser cambiada.",
"lock.unlock": "Desbloquear",
"lock.isUnlocked": "Tus cambios sin guardar han sido sobrescritos por otro usuario. Puedes descargar los cambios y fusionarlos manualmente.",
"login": "Iniciar sesi\u00f3n",
"login.remember": "Mantener mi sesión iniciada",
@@ -330,8 +338,8 @@
"more": "Màs",
"name": "Nombre",
"next": "Siguiente",
"off": "off",
"on": "on",
"off": "Apagado",
"on": "Encendido",
"open": "Abrir",
"options": "Opciones",
@@ -353,8 +361,8 @@
"page.delete.confirm.title": "Introduce el título de la página para confirmar",
"page.draft.create": "Crear borrador",
"page.duplicate.appendix": "Copiar",
"page.duplicate.files": "Copy files",
"page.duplicate.pages": "Copy pages",
"page.duplicate.files": "Copiar archivos",
"page.duplicate.pages": "Copiar páginas",
"page.status": "Estado",
"page.status.draft": "Borrador",
"page.status.draft.description":
@@ -382,18 +390,18 @@
"revert": "Revertir",
"role": "Rol",
"role.admin.description": "The admin has all rights",
"role.admin.title": "Admin",
"role.admin.description": "El administrador tiene todos los derechos",
"role.admin.title": "Administrador",
"role.all": "Todos",
"role.empty": "No hay usuarios con este rol",
"role.description.placeholder": "Sin descripción",
"role.nobody.description": "This is a fallback role without any permissions",
"role.nobody.title": "Nobody",
"role.nobody.description": "Este es un rol alternativo sin permisos",
"role.nobody.title": "Nadie",
"save": "Guardar",
"search": "Buscar",
"section.required": "The section is required",
"section.required": "Esta sección es requerida",
"select": "Seleccionar",
"settings": "Ajustes",
@@ -413,8 +421,8 @@
"toolbar.button.heading.3": "Encabezado 3",
"toolbar.button.italic": "Texto en It\u00e1licas",
"toolbar.button.file": "Archivo",
"toolbar.button.file.select": "Select a file",
"toolbar.button.file.upload": "Upload a file",
"toolbar.button.file.select": "Selecciona un archivo",
"toolbar.button.file.upload": "Sube un archivo",
"toolbar.button.link": "Enlace",
"toolbar.button.ol": "Lista en orden",
"toolbar.button.ul": "Lista de viñetas",
@@ -422,13 +430,14 @@
"translation.author": "Equipo Kirby",
"translation.direction": "ltr",
"translation.name": "Español (América Latina)",
"translation.locale": "es_419",
"upload": "Subir",
"upload.error.cantMove": "The uploaded file could not be moved",
"upload.error.cantWrite": "Failed to write file to disk",
"upload.error.default": "The file could not be uploaded",
"upload.error.extension": "File upload stopped by extension",
"upload.error.formSize": "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the form",
"upload.error.cantMove": "El archivo subido no puede ser movido",
"upload.error.cantWrite": "Error al escribir el archivo en el disco",
"upload.error.default": "El archivo no pudo ser subido",
"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.iniPostSize": "The uploaded file exceeds the post_max_size directive in php.ini",
"upload.error.iniSize": "The uploaded file exceeds the upload_max_filesize directive in php.ini",
"upload.error.noFile": "No file was uploaded",

View File

@@ -61,13 +61,21 @@
"La extensión \"{extension}\" no está permitida",
"error.file.extension.missing":
"Falta la extensión para \"{filename}\"",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"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.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"El tipo de medio para \"{filename}\" no pudo ser detectado",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"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.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "No está permitido subir archivos {type}",
"error.file.undefined": "El archivo no pudo ser encontrado",
@@ -422,6 +430,7 @@
"translation.author": "Turqueso",
"translation.direction": "ltr",
"translation.name": "Español",
"translation.locale": "es_ES",
"upload": "Subir",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"پسوند فایل «{extension}» غیرمجاز است",
"error.file.extension.missing":
"\u0634\u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0628\u062f\u0648\u0646 \u067e\u0633\u0648\u0646\u062f \u0631\u0627 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"فایل آپلود شده باید از همان نوع باشد «{mime}»",
"error.file.mime.forbidden": "فرمت فایل «{mime}» غیرمجاز است",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"فرمت فایل «{filename}» قابل شناسایی نیست",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "نام فایل اجباری است",
"error.file.notFound": "فایل «{filename}» پیدا نشد.",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "شما اجازه بارگذاری فایلهای «{type}» را ندارید",
"error.file.undefined": "\u0641\u0627\u06cc\u0644 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f.",
@@ -422,6 +430,7 @@
"translation.author": "تیم کربی",
"translation.direction": "rtl",
"translation.name": "انگلیسی",
"translation.locale": "fa_IR",
"upload": "بارگذاری",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"Tiedostopääte \"{extension}\" ei ole sallittu",
"error.file.extension.missing":
"Tiedoston \"{filename}\" tiedostopääte puuttuu",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Lähetetyllä tiedostolla täytyy olla sama mime-tyyppi \"{mime}\"",
"error.file.mime.forbidden": "Median tyyppi \"{mime}\" ei ole sallittu",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Tiedoston \"{filename}\" mediatyyppiä ei voida tunnistaa",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Tiedostonimi ei voi olla tyhjä",
"error.file.notFound": "Tiedostoa \"{filename}\" ei löytynyt",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Sinulla ei ole oikeutta lähettää tiedostoja joiden tyyppi on {type}",
"error.file.undefined": "Tiedostoa ei l\u00f6ytynyt",
@@ -422,6 +430,7 @@
"translation.author": "Kirby-tiimi",
"translation.direction": "ltr",
"translation.name": "Suomi",
"translation.locale": "fi_FI",
"upload": "Lähetä",
"upload.error.cantMove": "Lähetettyä tiedostoa ei voitu siirtää",

View File

@@ -61,13 +61,21 @@
"Lextension «&nbsp;{extension}&nbsp;» nest pas autorisée",
"error.file.extension.missing":
"Lextension pour «&nbsp;{filename}&nbsp;» est manquante",
"error.file.maxheight": "La hauteur de l'image ne doit pas excéder {height} pixels",
"error.file.maxsize": "Le fichier est trop volumineux",
"error.file.maxwidth": "La largeur de l'image ne doit pas excéder {width} pixels",
"error.file.mime.differs":
"Le fichier transféré doit être du même type de média «&nbsp;{mime}&nbsp;»",
"error.file.mime.forbidden": "Le type de média «&nbsp;{mime}&nbsp;» nest pas autorisé",
"error.file.mime.invalid": "Type de média invalide : {mime}",
"error.file.mime.missing":
"Le type de média de «&nbsp;{filename}&nbsp;» na pu être détecté",
"error.file.minheight": "La hauteur de l'image doit être au moins {height} pixels",
"error.file.minsize": "Le fichier n'est pas assez volumineux",
"error.file.minwidth": "La largeur de l'image doit être au moins {width} pixels",
"error.file.name.missing": "Veuillez entrer un titre",
"error.file.notFound": "Le fichier «&nbsp;{filename}&nbsp;» na pu être trouvé",
"error.file.orientation": "L'orientation de l'image doit être \"{orientation}\"",
"error.file.type.forbidden": "Vous nêtes pas autorisé à transférer des fichiers {type}",
"error.file.undefined": "Le fichier na pu être trouvé",
@@ -422,6 +430,7 @@
"translation.author": "Kirby Team",
"translation.direction": "ltr",
"translation.name": "Français",
"translation.locale": "fr_FR",
"upload": "Transférer",
"upload.error.cantMove": "Le fichier transféré na pu être déplacé",

View File

@@ -61,13 +61,21 @@
"Tiltott kiterjeszt\u00e9s\u0171 f\u00e1jl",
"error.file.extension.missing":
"Kiterjeszt\u00e9s n\u00e9lk\u00fcli f\u00e1jl nem t\u00f6lthet\u0151 fel",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"A feltöltött fájlnak azonos \"{mime}\" típusúnak kell lennie",
"error.file.mime.forbidden": "A \"{mime}\" típusú médiafájlok nem engedélyezettek",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"A \"{filename}\" fájl típusa nem állapítható meg",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "A fálj neve nem lehet üres",
"error.file.notFound": "A \"{filename}\" fájl nem található",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Nem tölthetsz fel \"{type}\" típusú fájlokat",
"error.file.undefined": "A f\u00e1jl nem tal\u00e1lhat\u00f3",
@@ -422,6 +430,7 @@
"translation.author": "A Kirby csapata",
"translation.direction": "ltr",
"translation.name": "Magyar",
"translation.locale": "hu_HU",
"upload": "Feltöltés",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"Ekstensi \"{extension}\" tidak diizinkan",
"error.file.extension.missing":
"Berkas \"{filename}\" harus memiliki ekstensi",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Berkas yang diunggah harus memiliki tipe mime sama \"{mime}\"",
"error.file.mime.forbidden": "Media dengan tipe mime \"{mime}\" tidak diizinkan",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Tipe media untuk \"{filename}\" tidak dapat dideteksi",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Nama berkas harus diisi",
"error.file.notFound": "Berkas \"{filename}\" tidak dapat ditemukan",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Anda tidak diizinkan mengunggah berkas dengan tipe {type}",
"error.file.undefined": "Berkas tidak dapat ditemukan",
@@ -296,7 +304,7 @@
"loading": "Memuat",
"lock.unsaved": "Perubahan belum tersimpan",
"lock.unsaved.empty": "There are no more unsaved changes",
"lock.unsaved.empty": "Tidak ada lagi perubahan belum tersimpan",
"lock.isLocked": "Perubahan belum tersimpan oleh <strong>{email}</strong>",
"lock.file.isLocked": "Berkas sedang disunting oleh {email} dan tidak dapat diubah.",
"lock.page.isLocked": "Halaman sedang disunting oleh {email} dan tidak dapat diubah.",
@@ -422,6 +430,7 @@
"translation.author": "Tim Kirby",
"translation.direction": "ltr",
"translation.name": "Bahasa Indonesia",
"translation.locale": "id_ID",
"upload": "Unggah",
"upload.error.cantMove": "Berkas unggahan tidak dapat dipindahkan",

View File

@@ -61,13 +61,21 @@
"L'estensione \"{extension}\" non è consentita",
"error.file.extension.missing":
"Il file \"{filename}\" non ha estensione",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Il file caricato dev'essere dello stesso MIME type \"{mime}\"",
"error.file.mime.forbidden": "Il MIME type \"{mime}\" non è consentito",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Il MIME type per \"{filename}\" non può essere rilevato",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Il nome del file non può essere vuoto",
"error.file.notFound": "Il file non \u00e8 stato trovato",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Non ti è permesso caricare file {type}",
"error.file.undefined": "Il file non \u00e8 stato trovato",
@@ -422,6 +430,7 @@
"translation.author": "Kirby Team, Roman Steiner, Manu Moreale",
"translation.direction": "ltr",
"translation.name": "Italiano",
"translation.locale": "it_IT",
"upload": "Carica",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"이 확장자({extension})는 업로드할 수 없습니다.",
"error.file.extension.missing":
"파일({filename})에 확장자가 없습니다.",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"기존 파일과 MIME 형식({mime})이 다릅니다.",
"error.file.mime.forbidden": "이 MIME 형식({mime})은 업로드할 수 없습니다.",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"파일({filename})의 형식을 알 수 없습니다.",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "파일명을 입력하세요.",
"error.file.notFound": "파일({filename})이 없습니다.",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "이 형식({type})의 파일을 업로드할 권한이 없습니다.",
"error.file.undefined": "\ud30c\uc77c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.",
@@ -422,6 +430,7 @@
"translation.author": "Kirby 팀",
"translation.direction": "LTR",
"translation.name": "한국어",
"translation.locale": "ko_KR",
"upload": "업로드",
"upload.error.cantMove": "업로드한 파일을 이동할 수 없습니다.",

View File

@@ -13,13 +13,13 @@
"date.select": "Pasirinkite datą",
"day": "Diena",
"days.fri": "Penktadienis",
"days.mon": "Pirmadienis",
"days.sat": "Šeštadienis",
"days.sun": "Sekmadienis",
"days.thu": "Ketvirtadienis",
"days.tue": "Antradienis",
"days.wed": "Trečiadienis",
"days.fri": "Pen",
"days.mon": "Pir",
"days.sat": "Šeš",
"days.sun": "Sek",
"days.thu": "Ket",
"days.tue": "Ant",
"days.wed": "Tre",
"delete": "Pašalinti",
"dimensions": "Išmatavimai",
@@ -61,13 +61,21 @@
"Failo tipas (plėtinys) \"{extension}\" neleidžiamas",
"error.file.extension.missing":
"Failui \"{filename}\" trūksta tipo (plėtinio)",
"error.file.maxheight": "Failo aukštis neturi viršyti {height} px",
"error.file.maxsize": "Failas per didelis",
"error.file.maxwidth": "Failo plotis neturi viršyti {width} px",
"error.file.mime.differs":
"Įkėliamas failas turi būti tokio pat mime tipo \"{mime}\"",
"error.file.mime.forbidden": "Media tipas \"{mime}\" neleidžiamas",
"error.file.mime.invalid": "Neteisingas mime tipas: {mime}",
"error.file.mime.missing":
"Failui \"{filename}\" nepavyko atpažinti media (mime) tipo",
"error.file.minheight": "Failo aukštis turi būti bent {height} px",
"error.file.minsize": "Failas per mažas",
"error.file.minwidth": "Failo plotis turi būti bent {width} px",
"error.file.name.missing": "Failo pavadinimas negali būti tuščias",
"error.file.notFound": "Failas \"{filename}\" nerastas",
"error.file.orientation": "Failo orientacija turi būti \"{orientation}\"",
"error.file.type.forbidden": "Jūs neturite teisės įkelti {type} tipo failų",
"error.file.undefined": "Failas nerastas",
@@ -296,7 +304,7 @@
"loading": "Kraunasi",
"lock.unsaved": "Neišsaugoti pakeitimai",
"lock.unsaved.empty": "There are no more unsaved changes",
"lock.unsaved.empty": "Nebeliko neišsaugotų pakeitimų",
"lock.isLocked": "Vartotojo <strong>{email}</strong> neišsaugoti pakeitimai",
"lock.file.isLocked": "Šį failą dabar redaguoja kitas vartotojas {email}, tad jo negalima pekeisti.",
"lock.page.isLocked": "Šį puslapį dabar redaguoja kitas vartotojas {email}, tad jo negalima pekeisti.",
@@ -422,6 +430,7 @@
"translation.author": "Roman U",
"translation.direction": "ltr",
"translation.name": "Lietuvių",
"translation.locale": "lt_LT",
"upload": "Įkelti",
"upload.error.cantMove": "Įkeltas failas negali būti perkeltas",

View File

@@ -61,13 +61,21 @@
"Ugyldig filtype",
"error.file.extension.missing":
"Du kan ikke laste opp filer uten filtype",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Den opplastede filen må være av samme MIME-type \"{mime}\"",
"error.file.mime.forbidden": "Mediatypen \"{mime}\" er ikke tillatt",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Mediatypen for \"{filename}\" kan ikke gjenkjennes",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Filnavnet kan ikke være tomt",
"error.file.notFound": "Filen kunne ikke bli funnet",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Du har ikke lov til å laste opp filer av typen {type}",
"error.file.undefined": "Filen kunne ikke bli funnet",
@@ -422,6 +430,7 @@
"translation.author": "Kirby Team",
"translation.direction": "ltr",
"translation.name": "Norsk Bokm\u00e5l",
"translation.locale": "nb_NO",
"upload": "Last opp",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"Bestandsextensie \"{extension}\" is niet toegestaan",
"error.file.extension.missing":
"Je kunt geen bestanden uploaden zonder bestandsextensie",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Het geüploade bestand moet van hetzelfde mime-type zijn: \"{mime}\"",
"error.file.mime.forbidden": "Het type \"{mime}\" is niet toegestaan",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Het mediatype voor \"{filename}\" kan niet worden gedecteerd",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "De bestandsnaam mag niet leeg zijn",
"error.file.notFound": "Het bestand kan niet worden gevonden",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Je hebt geen rechten om {type} bestanden up te loaden",
"error.file.undefined": "Het bestand kan niet worden gevonden",
@@ -422,6 +430,7 @@
"translation.author": "Het team van Kirby",
"translation.direction": "ltr",
"translation.name": "Nederlands",
"translation.locale": "nl_NL",
"upload": "Upload",
"upload.error.cantMove": "Het geüploadde bestand kon niet worden verplaatst",

View File

@@ -61,13 +61,21 @@
"Rozszerzenie \"{extension}\" jest niedozwolone",
"error.file.extension.missing":
"Brak rozszerzenia pliku \"{filename}\"",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Przesłany plik musi być tego samego typu mime \"{mime}\"",
"error.file.mime.forbidden": "Typ multimediów \"{mime}\" jest niedozwolony",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Nie można wykryć typu multimediów dla \"{filename}\"",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Nazwa pliku nie może być pusta",
"error.file.notFound": "Nie można znaleźć pliku \"{filename}\"",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Nie możesz przesyłać plików {type}",
"error.file.undefined": "Nie można znaleźć pliku",
@@ -422,6 +430,7 @@
"translation.author": "Zespół Kirby",
"translation.direction": "ltr",
"translation.name": "Polski",
"translation.locale": "pl_PL",
"upload": "Prześlij",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"Extensão \"{extension}\" não permitida",
"error.file.extension.missing":
"Extensão de \"{filename}\" em falta",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"O arquivo enviado precisa ser do tipo \"{mime}\"",
"error.file.mime.forbidden": "Tipo de mídia \"{mime}\" não permitido",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Tipo de mídia de \"{filename}\" não detectado",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "O nome do arquivo não pode ficar em branco",
"error.file.notFound": "Arquivo \"{filename}\" não encontrado",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Você não tem permissão para enviar arquivos {type}",
"error.file.undefined": "Arquivo n\u00e3o encontrado",
@@ -422,6 +430,7 @@
"translation.author": "Kirby Team",
"translation.direction": "ltr",
"translation.name": "Português (Brasileiro)",
"translation.locale": "pt_BR",
"upload": "Enviar",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"Extensão \"{extension}\" não permitida",
"error.file.extension.missing":
"Extensão de \"{filename}\" em falta",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"O arquivo enviado precisa ser do tipo \"{mime}\"",
"error.file.mime.forbidden": "Tipo de mídia \"{mime}\" não permitido",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Tipo de mídia de \"{filename}\" não detectado",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "O nome do arquivo não pode ficar em branco",
"error.file.notFound": "Arquivo \"{filename}\" não encontrado",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Não tem permissões para enviar arquivos {type}",
"error.file.undefined": "Arquivo n\u00e3o encontrado",
@@ -422,6 +430,7 @@
"translation.author": "Kirby Team",
"translation.direction": "ltr",
"translation.name": "Português (Europeu)",
"translation.locale": "pt_PT",
"upload": "Enviar",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"Расширение файла \"{extension}\" неразрешено",
"error.file.extension.missing":
"Файлу \"{filename}\" не хватает расширения",
"error.file.maxheight": "Высота картинки не должна превышать {height} px",
"error.file.maxsize": "Файл слишком большой",
"error.file.maxwidth": "Ширина картинки не должна превышать {width} px",
"error.file.mime.differs":
"Загруженный файл должен быть того же mime типа: \"{mime}\"",
"error.file.mime.forbidden": "Тип медиа \"{mime}\" не допустим",
"error.file.mime.invalid": "Неверный тип mime: {mime}",
"error.file.mime.missing":
"Не удалось определить тип медиа для файла \"{filename}\"",
"error.file.minheight": "Высота файла должна быть хотя бы {height} px",
"error.file.minsize": "Файл слишком маленький",
"error.file.minwidth": "Ширина файла должна быть хотя бы {width} px",
"error.file.name.missing": "Название файла не может быть пустым",
"error.file.notFound": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
"error.file.orientation": "Ориентация картинки должна быть \"{orientation}\"",
"error.file.type.forbidden": "У вас нет права загружать файлы {type}",
"error.file.undefined": "\u0424\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
@@ -296,7 +304,7 @@
"loading": "Загрузка",
"lock.unsaved": "Несохраненные изменения",
"lock.unsaved.empty": "There are no more unsaved changes",
"lock.unsaved.empty": "Больше нет несохраненных изменений",
"lock.isLocked": "Несохраненные изменения пользователя <strong>{email}</strong>",
"lock.file.isLocked": "В данный момент этот файл редактирует {email}, поэтому его нельзя изменить.",
"lock.page.isLocked": "В данный момент эту страницу редактирует {email}, поэтому его нельзя изменить.",
@@ -422,6 +430,7 @@
"translation.author": "Команда Кирби",
"translation.direction": "ltr",
"translation.name": "Русский (Russian)",
"translation.locale": "ru_RU",
"upload": "Закачать",
"upload.error.cantMove": "Загруженный файл не может быть перемещен",

View File

@@ -61,13 +61,21 @@
"Prípona \"{extension}\" nie je povolená",
"error.file.extension.missing":
"Prípona pre \"{filename}\" chýba",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"MIME typ nahratého súboru msa musí zhodovať s \"{mime}\"",
"error.file.mime.forbidden": "Typ média \"{mime}\" nie je povolený",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Typ média pre \"{filename}\" sa nepodarilo zistiť",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Názov súboru nemôže byť prázdny",
"error.file.notFound": "Súbor \"{filename}\" sa nepodarilo nájsť",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Nemáte povolenie na nahrávanie súborov s typom {type}",
"error.file.undefined": "Súbor nie je možné nájsť",
@@ -422,6 +430,7 @@
"translation.author": "Tím Kirby",
"translation.direction": "ltr",
"translation.name": "Slovensky",
"translation.locale": "sk_SK",
"upload": "Nahrať",
"upload.error.cantMove": "The uploaded file could not be moved",

View File

@@ -61,13 +61,21 @@
"Filändelsen \"{extension}\" är inte tillåten",
"error.file.extension.missing":
"Filen \"{filename}\" saknar filändelse",
"error.file.maxheight": "The height of the image must not exceed {height} pixels",
"error.file.maxsize": "The file is too large",
"error.file.maxwidth": "The width of the image must not exceed {width} pixels",
"error.file.mime.differs":
"Den uppladdade filen måste vara av samma mime-typ \"{mime}\"",
"error.file.mime.forbidden": "Mediatypen \"{mime}\" är inte tillåten",
"error.file.mime.invalid": "Invalid mime type: {mime}",
"error.file.mime.missing":
"Mediatypen för \"{filename}\" kan inte detekteras",
"error.file.minheight": "The height of the image must be at least {height} pixels",
"error.file.minsize": "The file is too small",
"error.file.minwidth": "The width of the image must be at least {width} pixels",
"error.file.name.missing": "Filnamnet får inte vara tomt",
"error.file.notFound": "Filen \"{filename}\" kan ej hittas",
"error.file.orientation": "The orientation of the image must be \"{orientation}\"",
"error.file.type.forbidden": "Du har inte behörighet att ladda upp filer av typen {type}",
"error.file.undefined": "Filen kan inte hittas",
@@ -422,6 +430,7 @@
"translation.author": "Kirby-teamet, Ola Christensson",
"translation.direction": "ltr",
"translation.name": "Svenska",
"translation.locale": "sv_SE",
"upload": "Ladda upp",
"upload.error.cantMove": "Den överförda filen kunde inte flyttas",

View File

@@ -61,13 +61,21 @@
"\"{extension}\" dosya uzantısına izin verilmiyor",
"error.file.extension.missing":
"\"{filename}\" dosyasının uzantısı yok",
"error.file.maxheight": "Resmin yüksekliği {height} pikselden büyük olmamalıdır",
"error.file.maxsize": "Dosya çok büyük",
"error.file.maxwidth": "Resmin genişliği {width} pikselden büyük olmamalıdır",
"error.file.mime.differs":
"Yüklenen dosya aynı dosya türü \"{mime}\" olmalıdır",
"error.file.mime.forbidden": "\"{mime}\" medya türüne izin verilmiyor",
"error.file.mime.invalid": "Geçersiz medya türü: {mime}",
"error.file.mime.missing":
"\"{filename}\" için medya türü tespit edilemiyor",
"error.file.minheight": "Resmin yüksekliği en az {height} piksel olmalıdır",
"error.file.minsize": "Dosya çok küçük",
"error.file.minwidth": "Resmin genişliği en az {width} piksel olmalıdır",
"error.file.name.missing": "Dosya adı boş bırakılamaz",
"error.file.notFound": "\"{filename}\" dosyası bulunamadı",
"error.file.orientation": "Resmin oryantasyonu \"{orientation}\" olmalıdır",
"error.file.type.forbidden": "{type} dosya yükleme izni yok",
"error.file.undefined": "Dosya bulunamad\u0131",
@@ -422,6 +430,7 @@
"translation.author": "Kirby Takımı",
"translation.direction": "ltr",
"translation.name": "T\u00fcrk\u00e7e",
"translation.locale": "tr_TR",
"upload": "Yükle",
"upload.error.cantMove": "Yüklenen dosya taşınamadı",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -174,21 +174,19 @@ class Api
// set PHP locales based on *user* language
// so that e.g. strftime() gets formatted correctly
if (is_a($user, 'Kirby\Cms\User') === true) {
$locale = $language = $user->language();
$language = $user->language();
// if it's not already a full locale, "fake" one
// and assume that the country equals the language
if (Str::contains($locale, '_') !== true) {
$locale .= '_' . strtoupper($locale);
}
// get the locale from the translation
$translation = $user->kirby()->translation($language);
$locale = ($translation !== null)? $translation->locale() : $language;
// provide some variants as fallbacks to be
// compatible with as many systems as possible
$locales = [
$locale,
$locale . '.UTF-8',
$locale . '.UTF8',
$locale . '.ISO8859-1',
$locale,
$language,
setlocale(LC_ALL, 0) // fall back to the previously defined locale
];
@@ -225,7 +223,7 @@ class Api
* @param array|null $collection
* @return \Kirby\Api\Collection
*
* @throws NotFoundException If no collection for `$name` exists
* @throws \Kirby\Exception\NotFoundException If no collection for `$name` exists
*/
public function collection(string $name, $collection = null)
{
@@ -254,7 +252,7 @@ class Api
* @param mixed ...$args
* @return mixed
*
* @throws NotFoundException If no data for `$key` exists
* @throws \Kirby\Exception\NotFoundException If no data for `$key` exists
*/
public function data($key = null, ...$args)
{
@@ -302,7 +300,7 @@ class Api
* @param mixed $object
* @return \Kirby\Api\Model
*
* @throws NotFoundException If no model for `$name` exists
* @throws \Kirby\Exception\NotFoundException If no model for `$name` exists
*/
public function model(string $name, $object = null)
{
@@ -414,7 +412,7 @@ class Api
* @param mixed $object
* @return \Kirby\Api\Model|\Kirby\Api\Collection
*
* @throws NotFoundException If `$object` cannot be resolved
* @throws \Kirby\Exception\NotFoundException If `$object` cannot be resolved
*/
public function resolve($object)
{
@@ -705,8 +703,8 @@ class Api
* @param bool $single
* @return array
*
* @throws Exception If request has no files
* @throws Exception If there was an error with the upload
* @throws \Exception If request has no files
* @throws \Exception If there was an error with the upload
*/
public function upload(Closure $callback, $single = false): array
{

View File

@@ -67,7 +67,7 @@ class App
protected $routes;
protected $router;
protected $server;
protected $session;
protected $sessionHandler;
protected $site;
protected $system;
protected $urls;
@@ -784,6 +784,7 @@ class App
/**
* Returns the nonce, which is used
* in the panel for inline scripts
* @since 3.3.0
*
* @return string
*/
@@ -1105,8 +1106,18 @@ class App
*/
public function session(array $options = [])
{
$this->session = $this->session ?? new AutoSession($this->root('sessions'), $this->options['session'] ?? []);
return $this->session->get($options);
return $this->sessionHandler()->get($options);
}
/**
* Returns the session handler
*
* @return \Kirby\Session\AutoSession
*/
public function sessionHandler()
{
$this->sessionHandler = $this->sessionHandler ?? new AutoSession($this->root('sessions'), $this->option('session', []));
return $this->sessionHandler;
}
/**

View File

@@ -198,9 +198,9 @@ class Auth
* @param bool $long
* @return \Kirby\Cms\User
*
* @throws PermissionException If the rate limit was exceeded or if any other error occured with debug mode off
* @throws NotFoundException If the email was invalid
* @throws InvalidArgumentException If the password is not valid (via `$user->login()`)
* @throws \Kirby\Exception\PermissionException If the rate limit was exceeded or if any other error occured with debug mode off
* @throws \Kirby\Exception\NotFoundException If the email was invalid
* @throws \Kirby\Exception\InvalidArgumentException If the password is not valid (via `$user->login()`)
*/
public function login(string $email, string $password, bool $long = false)
{
@@ -214,10 +214,22 @@ class Auth
$user = $this->validatePassword($email, $password);
$user->loginPasswordless($options);
return $user;
}
/**
* Sets a user object as the current user in the cache
* @internal
*
* @param \Kirby\Cms\User $user
* @return void
*/
public function setUser(User $user): void
{
// stop impersonating
$this->impersonate = null;
return $this->user = $user;
$this->user = $user;
}
/**
@@ -228,9 +240,9 @@ class Auth
* @param string $password
* @return \Kirby\Cms\User
*
* @throws PermissionException If the rate limit was exceeded or if any other error occured with debug mode off
* @throws NotFoundException If the email was invalid
* @throws InvalidArgumentException If the password is not valid (via `$user->login()`)
* @throws \Kirby\Exception\PermissionException If the rate limit was exceeded or if any other error occured with debug mode off
* @throws \Kirby\Exception\NotFoundException If the email was invalid
* @throws \Kirby\Exception\InvalidArgumentException If the password is not valid (via `$user->login()`)
*/
public function validatePassword(string $email, string $password)
{
@@ -334,20 +346,30 @@ class Auth
/**
* Logout the current user
*
* @return bool
* @return void
*/
public function logout(): bool
public function logout(): void
{
// stop impersonating
// stop impersonating;
// ensures that we log out the actually logged in user
$this->impersonate = null;
// logout the current user if it exists
if ($user = $this->user()) {
$user->logout();
}
}
/**
* Clears the cached user data after logout
* @internal
*
* @return void
*/
public function flush(): void
{
$this->impersonate = null;
$this->user = null;
return true;
}
/**
@@ -415,7 +437,8 @@ class Auth
*
* @param \Kirby\Session\Session|array|null $session
* @return \Kirby\Cms\User
* @throws
*
* @throws \Throwable If an authentication error occured
*/
public function user($session = null)
{

View File

@@ -405,6 +405,7 @@ abstract class ModelWithContent extends Model
* Returns an array of all actions
* that can be performed in the Panel
* This also checks for the lock status
* @since 3.3.0
*
* @param array $unlock An array of options that will be force-unlocked
* @return array

View File

@@ -438,6 +438,7 @@ class Pages extends Collection
/**
* Filter all pages by excluding the given template
* @since 3.3.0
*
* @param string|array $templates
* @return \Kirby\Cms\Pages

View File

@@ -4,6 +4,7 @@ namespace Kirby\Cms;
use Exception;
use Kirby\Data\Data;
use Kirby\Toolkit\Str;
/**
* Wrapper around Kirby's localization files,
@@ -149,6 +150,21 @@ class Translation
}
}
/**
* Returns the PHP locale of the translation
*
* @return string
*/
public function locale(): string
{
$default = $this->code;
if (Str::contains($default, '_') !== true) {
$default .= '_' . strtoupper($this->code);
}
return $this->get('translation.locale', $default);
}
/**
* Returns the human-readable translation name.
*

View File

@@ -5,7 +5,6 @@ namespace Kirby\Cms;
use Exception;
use Kirby\Exception\InvalidArgumentException;
use Kirby\Exception\NotFoundException;
use Kirby\Exception\PermissionException;
use Kirby\Session\Session;
use Kirby\Toolkit\F;
use Kirby\Toolkit\Str;
@@ -408,7 +407,7 @@ class User extends ModelWithContent
* @param \Kirby\Session\Session|array $session Session options or session object to set the user in
* @return bool
*
* @throws PermissionException If the password is not valid
* @throws \Kirby\Exception\PermissionException If the password is not valid
*/
public function login(string $password, $session = null): bool
{
@@ -434,6 +433,7 @@ class User extends ModelWithContent
$session->regenerateToken(); // privilege change
$session->data()->set('user.id', $this->id());
$this->kirby()->auth()->setUser($this);
$kirby->trigger('user.login:after', $this, $session);
}
@@ -451,8 +451,12 @@ class User extends ModelWithContent
$kirby->trigger('user.logout:before', $this, $session);
// remove the user from the session for future requests
$session->data()->remove('user.id');
// clear the cached user object from the app state of the current request
$this->kirby()->auth()->flush();
if ($session->data()->get() === []) {
// session is now empty, we might as well destroy it
$session->destroy();
@@ -872,9 +876,9 @@ class User extends ModelWithContent
* @param string $password
* @return bool
*
* @throws NotFoundException If the user has no password
* @throws InvalidArgumentException If the entered password is not valid
* @throws InvalidArgumentException If the entered password does not match the user password
* @throws \Kirby\Exception\NotFoundException If the user has no password
* @throws \Kirby\Exception\InvalidArgumentException If the entered password is not valid
* @throws \Kirby\Exception\InvalidArgumentException If the entered password does not match the user password
*/
public function validatePassword(string $password = null): bool
{

View File

@@ -5,6 +5,7 @@ namespace Kirby\Exception;
/**
* ErrorPageException
* Thrown to trigger the CMS error page
* @since 3.3.0
*
* @package Kirby Exception
* @author Lukas Bestle <lukas@getkirby.com>

View File

@@ -180,6 +180,7 @@ class Visitor
/**
* Returns the MIME type from the provided list that
* is most accepted (= preferred) by the visitor
* @since 3.3.0
*
* @param string ...$mimeTypes MIME types to query for
* @return string|null Preferred MIME type
@@ -206,6 +207,7 @@ class Visitor
/**
* Returns true if the visitor prefers a JSON response over
* an HTML response based on the `Accept` request header
* @since 3.3.0
*
* @return bool
*/

View File

@@ -6,6 +6,7 @@ use Exception;
use Kirby\Http\Response;
use Kirby\Toolkit\File;
use Kirby\Toolkit\Html;
use Kirby\Toolkit\I18n;
use Kirby\Toolkit\Mime;
use Kirby\Toolkit\V;
@@ -205,30 +206,35 @@ class Image extends File
{
if (($rules['mime'] ?? null) !== null) {
if (Mime::isAccepted($this->mime(), $rules['mime']) !== true) {
throw new Exception(sprintf('Invalid mime type: %s', $this->mime()));
throw new Exception(I18n::template('error.file.mime.invalid', [
'mime' => $this->mime()
]));
}
}
$rules = array_change_key_case($rules);
$validations = [
'maxsize' => ['size', 'max', 'The file is too large'],
'minsize' => ['size', 'min', 'The file is too small'],
'maxwidth' => ['width', 'max', 'The width of the image must not exceed %s pixels'],
'minwidth' => ['width', 'min', 'The width of the image must be at least %s pixels'],
'maxheight' => ['height', 'max', 'The height of the image must not exceed %s pixels'],
'minheight' => ['height', 'min', 'The height of the image must be at least %s pixels'],
'orientation' => ['orientation', 'same', 'The orientation of the image must be "%s"']
'maxsize' => ['size', 'max'],
'minsize' => ['size', 'min'],
'maxwidth' => ['width', 'max'],
'minwidth' => ['width', 'min'],
'maxheight' => ['height', 'max'],
'minheight' => ['height', 'min'],
'orientation' => ['orientation', 'same']
];
foreach ($validations as $key => $arguments) {
if (isset($rules[$key]) === true && $rules[$key] !== null) {
$rule = $rules[$key] ?? null;
if ($rule !== null) {
$property = $arguments[0];
$validator = $arguments[1];
$message = $arguments[2];
if (V::$validator($this->$property(), $rules[$key]) === false) {
throw new Exception(sprintf($message, $rules[$key]));
if (V::$validator($this->$property(), $rule) === false) {
throw new Exception(I18n::template('error.file.' . $key, [
$property => $rule
]));
}
}
}

View File

@@ -144,6 +144,18 @@ class AutoSession
return $this->sessions->create($options);
}
/**
* Returns the specified Session object
* @since 3.3.1
*
* @param string $token Session token, either including or without the key
* @return \Kirby\Session\Session
*/
public function getManually(string $token)
{
return $this->sessions->get($token, 'manual');
}
/**
* Deletes all expired sessions
*

View File

@@ -544,6 +544,7 @@ class Collection extends Iterator implements Countable
/**
* Returns a Collection with the intersection of the given elements
* @since 3.3.0
*
* @param \Kirby\Toolkit\Collection $other
* @return \Kirby\Toolkit\Collection
@@ -555,6 +556,7 @@ class Collection extends Iterator implements Countable
/**
* Checks if there is an intersection between the given collection and this collection
* @since 3.3.0
*
* @param \Kirby\Toolkit\Collection $other
* @return bool
@@ -1060,6 +1062,7 @@ class Collection extends Iterator implements Countable
* is true. If the first parameter is false, the Closure will not be executed.
* You may pass another Closure as the third parameter to the when method.
* This Closure will execute if the first parameter evaluates as false
* @since 3.3.0
*
* @param mixed $condition
* @param Closure $callback

View File

@@ -242,6 +242,7 @@ class Mime
/**
* Tests if a MIME wildcard pattern from an `Accept` header
* matches a given type
* @since 3.3.0
*
* @param string $test
* @param string $wildcard