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
+1 -1
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",
+1 -1
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",
+1 -1
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) {
+1
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
+2
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
+9
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",
+9
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": "L’orientació 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",
+20 -11
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í...",
+9
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",
+9
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",
+9
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",
+9
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",
+56 -47
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",
+9
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",
+9
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",
+9
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ää",
+9
View File
@@ -61,13 +61,21 @@
"L’extension «&nbsp;{extension}&nbsp;» n’est pas autorisée",
"error.file.extension.missing":
"L’extension 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;» n’est 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;» n’a 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;» n’a 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 n’a 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é n’a pu être déplacé",
+9
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",
+10 -1
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",
+9
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",
+9
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": "업로드한 파일을 이동할 수 없습니다.",
+17 -8
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",
+9
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",
+9
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",
+9
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",
+9
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",
+9
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",
+10 -1
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": "Загруженный файл не может быть перемещен",
+9
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",
+9
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",
+9
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ı",
+1 -1
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+3 -3
View File
File diff suppressed because one or more lines are too long
+11 -13
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
{
+14 -3
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;
}
/**
+35 -12
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)
{
+1
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
+1
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
+16
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.
*
+9 -5
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
{
@@ -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>
+2
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
*/
+18 -12
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
]));
}
}
}
+12
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
*
+3
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
+1
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