Merge branch 'master' into release

This commit is contained in:
Dan Brown 2019-05-07 23:05:10 +01:00
commit 9443ae9f40
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
31 changed files with 268 additions and 109 deletions

View File

@ -67,6 +67,9 @@ class HomeController extends Controller
if ($homepageOption === 'bookshelves') { if ($homepageOption === 'bookshelves') {
$shelves = $this->entityRepo->getAllPaginated('bookshelf', 18, $commonData['sort'], $commonData['order']); $shelves = $this->entityRepo->getAllPaginated('bookshelf', 18, $commonData['sort'], $commonData['order']);
foreach ($shelves as $shelf) {
$shelf->books = $this->entityRepo->getBookshelfChildren($shelf);
}
$data = array_merge($commonData, ['shelves' => $shelves]); $data = array_merge($commonData, ['shelves' => $shelves]);
return view('common.home-shelves', $data); return view('common.home-shelves', $data);
} }

View File

@ -4,10 +4,8 @@ use Illuminate\Contracts\Cache\Repository as Cache;
/** /**
* Class SettingService * Class SettingService
*
* The settings are a simple key-value database store. * The settings are a simple key-value database store.
* * For non-authenticated users, user settings are stored via the session instead.
* @package BookStack\Services
*/ */
class SettingService class SettingService
{ {
@ -52,6 +50,19 @@ class SettingService
return $formatted; return $formatted;
} }
/**
* Get a value from the session instead of the main store option.
* @param $key
* @param bool $default
* @return mixed
*/
protected function getFromSession($key, $default = false)
{
$value = session()->get($key, $default);
$formatted = $this->formatValue($value, $default);
return $formatted;
}
/** /**
* Get a user-specific setting from the database or cache. * Get a user-specific setting from the database or cache.
* @param \BookStack\Auth\User $user * @param \BookStack\Auth\User $user
@ -62,7 +73,7 @@ class SettingService
public function getUser($user, $key, $default = false) public function getUser($user, $key, $default = false)
{ {
if ($user->isDefault()) { if ($user->isDefault()) {
return session()->get($key, $default); return $this->getFromSession($key, $default);
} }
return $this->get($this->userKey($user->id, $key), $default); return $this->get($this->userKey($user->id, $key), $default);
} }

View File

@ -298,7 +298,7 @@ class MarkdownEditor {
formData.append('file', file, remoteFilename); formData.append('file', file, remoteFilename);
formData.append('uploaded_to', context.pageId); formData.append('uploaded_to', context.pageId);
window.$http.post('/images/gallery/upload', formData).then(resp => { window.$http.post('/images/gallery', formData).then(resp => {
const newContent = `[![${selectedText}](${resp.data.thumbs.display})](${resp.data.url})`; const newContent = `[![${selectedText}](${resp.data.thumbs.display})](${resp.data.url})`;
replaceContent(placeHolderText, newContent); replaceContent(placeHolderText, newContent);
}).catch(err => { }).catch(err => {
@ -366,7 +366,7 @@ class MarkdownEditor {
uploaded_to: Number(document.getElementById('page-editor').getAttribute('page-id')) uploaded_to: Number(document.getElementById('page-editor').getAttribute('page-id'))
}; };
window.$http.post(window.baseUrl('/images/drawing/upload'), data).then(resp => { window.$http.post(window.baseUrl('/images/drawio'), data).then(resp => {
this.insertDrawing(resp.data, cursorPos); this.insertDrawing(resp.data, cursorPos);
DrawIO.close(); DrawIO.close();
}).catch(err => { }).catch(err => {
@ -402,7 +402,7 @@ class MarkdownEditor {
uploaded_to: Number(document.getElementById('page-editor').getAttribute('page-id')) uploaded_to: Number(document.getElementById('page-editor').getAttribute('page-id'))
}; };
window.$http.post(window.baseUrl(`/images/drawing/upload`), data).then(resp => { window.$http.post(window.baseUrl(`/images/drawio`), data).then(resp => {
let newText = `<div drawio-diagram="${resp.data.id}"><img src="${resp.data.url}"></div>`; let newText = `<div drawio-diagram="${resp.data.id}"><img src="${resp.data.url}"></div>`;
let newContent = this.cm.getValue().split('\n').map(line => { let newContent = this.cm.getValue().split('\n').map(line => {
if (line.indexOf(`drawio-diagram="${drawingId}"`) !== -1) { if (line.indexOf(`drawio-diagram="${drawingId}"`) !== -1) {

View File

@ -53,7 +53,7 @@ async function uploadImageFile(file, wysiwygComponent) {
formData.append('file', file, remoteFilename); formData.append('file', file, remoteFilename);
formData.append('uploaded_to', wysiwygComponent.pageId); formData.append('uploaded_to', wysiwygComponent.pageId);
const resp = await window.$http.post(window.baseUrl('/images/gallery/upload'), formData); const resp = await window.$http.post(window.baseUrl('/images/gallery'), formData);
return resp.data; return resp.data;
} }

View File

@ -192,7 +192,7 @@
} }
@include smaller-than($xxl) { @include smaller-than($xxl) {
.content-wrap.card { .content-wrap.card {
padding: $-l $-xl; padding: $-m $-xl;
} }
} }
@include smaller-than($m) { @include smaller-than($m) {

View File

@ -26,6 +26,8 @@ return [
'remember_me' => 'Recordarme', 'remember_me' => 'Recordarme',
'ldap_email_hint' => 'Por favor introduzca un mail para utilizar con esta cuenta.', 'ldap_email_hint' => 'Por favor introduzca un mail para utilizar con esta cuenta.',
'create_account' => 'Crear una Cuenta', 'create_account' => 'Crear una Cuenta',
'already_have_account' => '¿Ya tienes una cuenta?',
'dont_have_account' => '¿No tienes una cuenta?',
'social_login' => 'Login Social', 'social_login' => 'Login Social',
'social_registration' => 'Registro Social', 'social_registration' => 'Registro Social',
'social_registration_text' => 'Registrar y entrar utilizando otro servicio.', 'social_registration_text' => 'Registrar y entrar utilizando otro servicio.',

View File

@ -11,6 +11,7 @@ return [
'save' => 'Guardar', 'save' => 'Guardar',
'continue' => 'Continuar', 'continue' => 'Continuar',
'select' => 'Seleccionar', 'select' => 'Seleccionar',
'toggle_all' => 'Marcarlos todos',
'more' => 'Más', 'more' => 'Más',
// Form Labels // Form Labels
@ -23,6 +24,7 @@ return [
// Actions // Actions
'actions' => 'Acciones', 'actions' => 'Acciones',
'view' => 'Ver', 'view' => 'Ver',
'view_all' => 'Ver todos',
'create' => 'Crear', 'create' => 'Crear',
'update' => 'Actualizar', 'update' => 'Actualizar',
'edit' => 'Editar', 'edit' => 'Editar',
@ -37,6 +39,11 @@ return [
'remove' => 'Remover', 'remove' => 'Remover',
'add' => 'Añadir', 'add' => 'Añadir',
// Sort Options
'sort_name' => 'Nombre',
'sort_created_at' => 'Fecha de Creación',
'sort_updated_at' => 'Fecha de Modificación',
// Misc // Misc
'deleted_user' => 'Usuario borrado', 'deleted_user' => 'Usuario borrado',
'no_activity' => 'Ninguna actividad para mostrar', 'no_activity' => 'Ninguna actividad para mostrar',
@ -53,7 +60,11 @@ return [
'view_profile' => 'Ver Perfil', 'view_profile' => 'Ver Perfil',
'edit_profile' => 'Editar Perfil', 'edit_profile' => 'Editar Perfil',
// Layout tabs
'tab_info' => 'Información',
'tab_content' => 'Contenido',
// Email Content // Email Content
'email_action_help' => 'Si está teniendo problemas clicando en el botón ":actionText", copie y pegue la siguiente URL en su navegador web:', 'email_action_help' => 'Si está teniendo problemas clicando en el botón ":actionText", copie y pegue la siguiente URL en su navegador web:',
'email_rights' => 'Todos los derechos reservados', 'email_rights' => 'Todos los derechos reservados',
]; ];

View File

@ -11,6 +11,7 @@ return [
'recently_updated_pages' => 'Páginas recientemente actualizadas', 'recently_updated_pages' => 'Páginas recientemente actualizadas',
'recently_created_chapters' => 'Capítulos recientemente creados', 'recently_created_chapters' => 'Capítulos recientemente creados',
'recently_created_books' => 'Libros recientemente creados', 'recently_created_books' => 'Libros recientemente creados',
'recently_created_shelves' => 'Estantes recientemente creados',
'recently_update' => 'Recientemente actualizado', 'recently_update' => 'Recientemente actualizado',
'recently_viewed' => 'Recientemente visto', 'recently_viewed' => 'Recientemente visto',
'recent_activity' => 'Actividad reciente', 'recent_activity' => 'Actividad reciente',
@ -67,11 +68,13 @@ return [
// Shelves // Shelves
'shelf' => 'Estante', 'shelf' => 'Estante',
'shelves' => 'Estantes', 'shelves' => 'Estantes',
'x_shelves' => ':count estante|:count estantes',
'shelves_long' => 'Estantes', 'shelves_long' => 'Estantes',
'shelves_empty' => 'No hay estantes creados', 'shelves_empty' => 'No hay estantes creados',
'shelves_create' => 'Crear estante', 'shelves_create' => 'Crear estante',
'shelves_popular' => 'Estantes populares', 'shelves_popular' => 'Estantes populares',
'shelves_new' => 'Estantes nuevos', 'shelves_new' => 'Estantes nuevos',
'shelves_new_action' => 'Nuevo estante',
'shelves_popular_empty' => 'Los estantes más populares aparecerán aquí.', 'shelves_popular_empty' => 'Los estantes más populares aparecerán aquí.',
'shelves_new_empty' => 'Los libros más recientes aparecerán aquí.', 'shelves_new_empty' => 'Los libros más recientes aparecerán aquí.',
'shelves_save' => 'Guardar estante', 'shelves_save' => 'Guardar estante',
@ -102,6 +105,7 @@ return [
'books_popular' => 'Libros populares', 'books_popular' => 'Libros populares',
'books_recent' => 'Libros recientes', 'books_recent' => 'Libros recientes',
'books_new' => 'Libros nuevos', 'books_new' => 'Libros nuevos',
'books_new_action' => 'Nuevo Libro',
'books_popular_empty' => 'Los libros más populares aparecerán aquí.', 'books_popular_empty' => 'Los libros más populares aparecerán aquí.',
'books_new_empty' => 'Los libros más recientes aparecerán aquí.', 'books_new_empty' => 'Los libros más recientes aparecerán aquí.',
'books_create' => 'Crear nuevo libro', 'books_create' => 'Crear nuevo libro',
@ -117,7 +121,6 @@ return [
'books_permissions_updated' => 'Permisos del libro actualizados', 'books_permissions_updated' => 'Permisos del libro actualizados',
'books_empty_contents' => 'Ninguna página o capítulo ha sido creada para este libro.', 'books_empty_contents' => 'Ninguna página o capítulo ha sido creada para este libro.',
'books_empty_create_page' => 'Crear una nueva página', 'books_empty_create_page' => 'Crear una nueva página',
'books_empty_or' => 'ó',
'books_empty_sort_current_book' => 'Organizar el libro actual', 'books_empty_sort_current_book' => 'Organizar el libro actual',
'books_empty_add_chapter' => 'Agregar un capítulo', 'books_empty_add_chapter' => 'Agregar un capítulo',
'books_permissions_active' => 'Permisos de libro activos', 'books_permissions_active' => 'Permisos de libro activos',
@ -125,6 +128,11 @@ return [
'books_navigation' => 'Navegación de libro', 'books_navigation' => 'Navegación de libro',
'books_sort' => 'Organizar contenido de libro', 'books_sort' => 'Organizar contenido de libro',
'books_sort_named' => 'Organizar libro :bookName', 'books_sort_named' => 'Organizar libro :bookName',
'books_sort_name' => 'Organizar por Nombre',
'books_sort_created' => 'Organizar por Fecha de creación',
'books_sort_updated' => 'Organizar por Fecha de modificación',
'books_sort_chapters_first' => 'Capítulos al inicio',
'books_sort_chapters_last' => 'Capítulos al final ',
'books_sort_show_other' => 'Mostrar otros libros', 'books_sort_show_other' => 'Mostrar otros libros',
'books_sort_save' => 'Guardar nuevo orden', 'books_sort_save' => 'Guardar nuevo orden',
@ -202,6 +210,8 @@ return [
'pages_revisions_created_by' => 'Creado por', 'pages_revisions_created_by' => 'Creado por',
'pages_revisions_date' => 'Fecha de revisión', 'pages_revisions_date' => 'Fecha de revisión',
'pages_revisions_number' => '#', 'pages_revisions_number' => '#',
'pages_revisions_numbered' => 'Revisión #:id',
'pages_revisions_numbered_changes' => 'Revisión #:id Cambios',
'pages_revisions_changelog' => 'Log de cambios', 'pages_revisions_changelog' => 'Log de cambios',
'pages_revisions_changes' => 'Cambios', 'pages_revisions_changes' => 'Cambios',
'pages_revisions_current' => 'Versión actual', 'pages_revisions_current' => 'Versión actual',
@ -267,6 +277,7 @@ return [
'profile_not_created_pages' => ':userName no ha creado ninguna página', 'profile_not_created_pages' => ':userName no ha creado ninguna página',
'profile_not_created_chapters' => ':userName no ha creado ningún capítulo', 'profile_not_created_chapters' => ':userName no ha creado ningún capítulo',
'profile_not_created_books' => ':userName no ha creado ningún libro', 'profile_not_created_books' => ':userName no ha creado ningún libro',
'profile_not_created_shelves' => ':userName no ha creado ningún estante',
// Comments // Comments
'comment' => 'Comentario', 'comment' => 'Comentario',
@ -288,6 +299,7 @@ return [
// Revision // Revision
'revision_delete_confirm' => '¿Está seguro de que desea eliminar esta revisión?', 'revision_delete_confirm' => '¿Está seguro de que desea eliminar esta revisión?',
'revision_restore_confirm' => '¿Está seguro de que desea restaurar esta revisión? El contenido actual de la página será reemplazado.',
'revision_delete_success' => 'Revisión eliminada', 'revision_delete_success' => 'Revisión eliminada',
'revision_cannot_delete_latest' => 'No se puede eliminar la última revisión.' 'revision_cannot_delete_latest' => 'No se puede eliminar la última revisión.'
]; ];

View File

@ -64,6 +64,7 @@ return [
'role_cannot_be_edited' => 'Este rol no puede ser editado', 'role_cannot_be_edited' => 'Este rol no puede ser editado',
'role_system_cannot_be_deleted' => 'Este rol es un rol de sistema y no puede ser borrado', 'role_system_cannot_be_deleted' => 'Este rol es un rol de sistema y no puede ser borrado',
'role_registration_default_cannot_delete' => 'Este rol no puede ser borrado mientras sea el rol por defecto de nuevos registros', 'role_registration_default_cannot_delete' => 'Este rol no puede ser borrado mientras sea el rol por defecto de nuevos registros',
'role_cannot_remove_only_admin' => 'Este usuario es el único usuario asignado al rol de administrador. Asigna primero este rol a otro usuario antes de eliminarlo.',
// Comments // Comments
'comment_list' => 'Se ha producido un error al buscar los comentarios.', 'comment_list' => 'Se ha producido un error al buscar los comentarios.',

View File

@ -12,34 +12,44 @@ return [
'settings_save_success' => 'Ajustes guardados', 'settings_save_success' => 'Ajustes guardados',
// App Settings // App Settings
'app_settings' => 'Ajustes de la aplicación', 'app_customization' => 'Personalización',
'app_features_security' => 'Características & Seguridad',
'app_name' => 'Nombre de la aplicación', 'app_name' => 'Nombre de la aplicación',
'app_name_desc' => 'Este nombre se muestra en la cabecera y en cualquier correo electrónico', 'app_name_desc' => 'Este nombre se muestra en la cabecera y en cualquier correo electrónico',
'app_name_header' => '¿Mostrar el nombre de la aplicación en la cabecera?', 'app_name_header' => 'Mostrar el nombre de la aplicación en la cabecera',
'app_public_viewing' => '¿Permitir vista pública?', 'app_public_access' => 'Acceso Público',
'app_secure_images' => '¿Habilitar mayor seguridad para subir imágenes?', 'app_public_access_desc' => 'Activando esta opción permitirá que usuarios sin iniciar sesión puedan ver el contenido de tu aplicación Bookstack.',
'app_public_access_desc_guest' => 'El acceso público para visitantes puede ser controlado a través del usuario "Guest".',
'app_public_access_toggle' => 'Permitir acceso público',
'app_public_viewing' => '¿Permitir acceso público?',
'app_secure_images' => 'Mayor seguridad para subir imágenes',
'app_secure_images_toggle' => 'Habilitar mayor seguridad en la subida de imágenes',
'app_secure_images_desc' => 'Por razones de rendimiento, todas las imágenes son públicas. Esta opción agrega una cadena de texto larga difícil de adivinar. Asegúrese que los índices de directorio no están habilitados para evitar el acceso fácil a las imágenes.', 'app_secure_images_desc' => 'Por razones de rendimiento, todas las imágenes son públicas. Esta opción agrega una cadena de texto larga difícil de adivinar. Asegúrese que los índices de directorio no están habilitados para evitar el acceso fácil a las imágenes.',
'app_editor' => 'Editor de páginas', 'app_editor' => 'Editor de Páginas',
'app_editor_desc' => 'Seleccione qué editor se usará por todos los usuarios para editar páginas.', 'app_editor_desc' => 'Seleccione qué editor se usará por todos los usuarios para editar páginas.',
'app_custom_html' => 'Contenido de cabecera HTML personalizado', 'app_custom_html' => 'Contenido de cabecera HTML personalizado',
'app_custom_html_desc' => 'Cualquier contenido agregado aquí será insertado al final de la sección <head> de cada página. Esto es útil para sobreescribir estilos o agregar código para analíticas web.', 'app_custom_html_desc' => 'Cualquier contenido agregado aquí será insertado al final de la sección <head> de cada página. Esto es útil para sobreescribir estilos o agregar código para analíticas web.',
'app_logo' => 'Logo de la aplicación', 'app_logo' => 'Logo de la Aplicación',
'app_logo_desc' => 'Esta imagen debería de ser 43px de altura. <br> Las imágenes grandes serán escaladas.', 'app_logo_desc' => 'Esta imagen debería de ser 43px de altura. <br> Las imágenes grandes serán escaladas.',
'app_primary_color' => 'Color primario de la aplicación', 'app_primary_color' => 'Color Primario de la Aplicación',
'app_primary_color_desc' => 'Esto debería ser un valor hexadecimal. <br>Deje el valor vacío para restaurar al valor por defecto.', 'app_primary_color_desc' => 'Esto debería ser un valor hexadecimal. <br>Deje el valor vacío para restaurar al valor por defecto.',
'app_homepage' => 'Página de inicio', 'app_homepage' => 'Página de inicio',
'app_homepage_desc' => 'Elija la vista que se mostrará en la página de inicio en lugar de la vista predeterminada. Se ignorarán los permisos de la página seleccionada.', 'app_homepage_desc' => 'Elija la vista que se mostrará en la página de inicio en lugar de la vista predeterminada. Se ignorarán los permisos de la página seleccionada.',
'app_homepage_select' => 'Elija una página', 'app_homepage_select' => 'Elija una página',
'app_disable_comments' => 'Deshabilitar comentarios', 'app_disable_comments' => 'Deshabilitar Comentarios',
'app_disable_comments_desc' => 'Deshabilita los comentarios en todas las páginas de la aplicación. Los comentarios existentes no se muestran.', 'app_disable_comments_toggle' => 'Deshabilitar comentarios',
'app_disable_comments_desc' => 'Deshabilita los comentarios en todas las páginas de la aplicación. <br> Los comentarios existentes no se muestran.',
// Registration Settings // Registration Settings
'reg_settings' => 'Ajustes de registro', 'reg_settings' => 'Registro',
'reg_allow' => '¿Permitir registro?', 'reg_enable' => 'Habilitar Registro',
'reg_enable_toggle' => 'Habilitar registro',
'reg_enable_desc' => 'Cuando se habilita el registro los usuarios podrán registrarse como usuarios de la aplicación. Al registrarse se les asigna un rol único por defecto.',
'reg_default_role' => 'Rol de usuario por defecto después del registro', 'reg_default_role' => 'Rol de usuario por defecto después del registro',
'reg_confirm_email' => '¿Requerir correo electrónico de confirmaación?', 'reg_email_confirmation' => 'Confirmación por Email',
'reg_confirm_email_desc' => 'Si se emplea la restricción por dominio, entonces se requerirá la confirmación por correo electrónico y el valor a continuación será ignorado.', 'reg_email_confirmation_toggle' => 'Requerir confirmación por Email',
'reg_confirm_restrict_domain' => 'Restringir registro al dominio', 'reg_confirm_email_desc' => 'Si se emplea la restricción por dominio, entonces se requerirá la confirmación por correo electrónico y esta opción será ignorada.',
'reg_confirm_restrict_domain' => 'Restricción de Dominio',
'reg_confirm_restrict_domain_desc' => 'Introduzca una lista separada por comas de los dominio a los que les gustaría restringir el registro de usuarios. A los usuarios les será enviado un correo electrónico para confirmar la dirección antes de que se le permita interactuar con la aplicación. <br> Tenga en cuenta que los usuarios podrán cambiar sus direcciones de correo electrónico después de registrarse exitosamente.', 'reg_confirm_restrict_domain_desc' => 'Introduzca una lista separada por comas de los dominio a los que les gustaría restringir el registro de usuarios. A los usuarios les será enviado un correo electrónico para confirmar la dirección antes de que se le permita interactuar con la aplicación. <br> Tenga en cuenta que los usuarios podrán cambiar sus direcciones de correo electrónico después de registrarse exitosamente.',
'reg_confirm_restrict_domain_placeholder' => 'Ninguna restricción establecida', 'reg_confirm_restrict_domain_placeholder' => 'Ninguna restricción establecida',
@ -88,12 +98,19 @@ return [
// Users // Users
'users' => 'Usuarios', 'users' => 'Usuarios',
'user_profile' => 'Perfil de usuario', 'user_profile' => 'Perfil de Usuario',
'users_add_new' => 'Agregar nuevo usuario', 'users_add_new' => 'Agregar Nuevo Usuario',
'users_details' => 'Detalles de Usuario',
'users_details_desc' => 'Ajusta un nombre público y email para este usuario. El email será empleado para acceder a la aplicación.',
'users_details_desc_no_email' => 'Ajusta un nombre público para este usuario para que pueda ser reconocido por otros.',
'users_search' => 'Buscar usuarios', 'users_search' => 'Buscar usuarios',
'users_role' => 'Roles de usuario', 'users_role' => 'Roles de usuario',
'users_role_desc' => 'Selecciona los roles a los que será asignado este usuario. Si se asignan varios roles los permisos se acumularán y recibirá todas las habilidades de los roles asignados.',
'users_password' => 'Contraseña de Usuario',
'users_password_desc' => 'Ajusta una contraseña que se utilizará para acceder a la aplicación. Debe ser al menos de 5 caracteres de longitud.',
'users_external_auth_id' => 'ID externo de autenticación', 'users_external_auth_id' => 'ID externo de autenticación',
'users_password_warning' => 'Solo debe rellenar este campo si desea cambiar su contraseña:', 'users_external_auth_id_desc' => 'Esta es la ID usada para asociar este usuario con LDAP.',
'users_password_warning' => 'Solo debe rellenar este campo si desea cambiar su contraseña.',
'users_system_public' => 'Este usuario representa cualquier usuario invitado que visita la aplicación. No puede utilizarse para acceder pero es asignado automáticamente.', 'users_system_public' => 'Este usuario representa cualquier usuario invitado que visita la aplicación. No puede utilizarse para acceder pero es asignado automáticamente.',
'users_delete' => 'Borrar usuario', 'users_delete' => 'Borrar usuario',
'users_delete_named' => 'Borrar usuario :userName', 'users_delete_named' => 'Borrar usuario :userName',
@ -104,8 +121,9 @@ return [
'users_edit_profile' => 'Editar perfil', 'users_edit_profile' => 'Editar perfil',
'users_edit_success' => 'Usuario actualizado', 'users_edit_success' => 'Usuario actualizado',
'users_avatar' => 'Avatar del usuario', 'users_avatar' => 'Avatar del usuario',
'users_avatar_desc' => 'Esta imagen debe ser aproximadamente de 256px por lado.', 'users_avatar_desc' => 'Elige una imagen para representar a este usuario. Debe ser aproximadamente de 256px por lado.',
'users_preferred_language' => 'Idioma preferido', 'users_preferred_language' => 'Idioma preferido',
'users_preferred_language_desc' => 'Esta opción cambiará el idioma de la interfaz de usuario en la aplicación. No afectará al contenido creado por los usuarios.',
'users_social_accounts' => 'Cuentas sociales', 'users_social_accounts' => 'Cuentas sociales',
'users_social_accounts_info' => 'Aquí puede conectar sus otras cuentas para un acceso rápido y fácil a la aplicación. Desconectando una cuenta aquí no revoca accesos ya autorizados. Revoque el acceso desde los ajustes de perfil en la cuenta social conectada.', 'users_social_accounts_info' => 'Aquí puede conectar sus otras cuentas para un acceso rápido y fácil a la aplicación. Desconectando una cuenta aquí no revoca accesos ya autorizados. Revoque el acceso desde los ajustes de perfil en la cuenta social conectada.',
'users_social_connect' => 'Conectar cuenta', 'users_social_connect' => 'Conectar cuenta',

View File

@ -33,6 +33,7 @@ return [
'filled' => 'El campo :attribute es requerido.', 'filled' => 'El campo :attribute es requerido.',
'exists' => 'El :attribute seleccionado es inválido.', 'exists' => 'El :attribute seleccionado es inválido.',
'image' => 'El :attribute debe ser una imagen.', 'image' => 'El :attribute debe ser una imagen.',
'image_extension' => 'El :attribute debe tener una extensión de imagen válida y soportada.',
'in' => 'El selected :attribute es inválio.', 'in' => 'El selected :attribute es inválio.',
'integer' => 'El :attribute debe ser un entero.', 'integer' => 'El :attribute debe ser un entero.',
'ip' => 'El :attribute debe ser una dirección IP válida.', 'ip' => 'El :attribute debe ser una dirección IP válida.',
@ -49,6 +50,7 @@ return [
'string' => 'El :attribute debe ser al menos :min caracteres.', 'string' => 'El :attribute debe ser al menos :min caracteres.',
'array' => 'El :attribute debe tener como mínimo :min items.', 'array' => 'El :attribute debe tener como mínimo :min items.',
], ],
'no_double_extension' => 'El :attribute solo debe tener una extensión de archivo.',
'not_in' => 'El :attribute seleccionado es inválio.', 'not_in' => 'El :attribute seleccionado es inválio.',
'numeric' => 'El :attribute debe ser numérico.', 'numeric' => 'El :attribute debe ser numérico.',
'regex' => 'El formato de :attribute es inválido', 'regex' => 'El formato de :attribute es inválido',
@ -69,6 +71,7 @@ return [
'timezone' => 'El atributo :attribute debe ser una zona válida.', 'timezone' => 'El atributo :attribute debe ser una zona válida.',
'unique' => 'El atributo :attribute ya ha sido tomado.', 'unique' => 'El atributo :attribute ya ha sido tomado.',
'url' => 'El atributo :attribute tiene un formato inválido.', 'url' => 'El atributo :attribute tiene un formato inválido.',
'uploaded' => 'El archivo no ha podido subirse. Es posible que el servidor no acepte archivos de este tamaño.',
// Custom validation lines // Custom validation lines
'custom' => [ 'custom' => [

View File

@ -32,6 +32,8 @@ return [
'remember_me' => 'Kom ihåg mig', 'remember_me' => 'Kom ihåg mig',
'ldap_email_hint' => 'Vänligen ange en e-postadress att använda till kontot.', 'ldap_email_hint' => 'Vänligen ange en e-postadress att använda till kontot.',
'create_account' => 'Skapa konto', 'create_account' => 'Skapa konto',
'already_have_account' => 'Har du redan en användare?',
'dont_have_account' => 'Har du ingen användare?',
'social_login' => 'Logga in genom socialt medie', 'social_login' => 'Logga in genom socialt medie',
'social_registration' => 'Registrera dig genom socialt media', 'social_registration' => 'Registrera dig genom socialt media',
'social_registration_text' => 'Registrera dig och logga in genom en annan tjänst.', 'social_registration_text' => 'Registrera dig och logga in genom en annan tjänst.',
@ -73,4 +75,4 @@ return [
'email_not_confirmed_click_link' => 'Vänligen klicka på länken i det mail du fick strax efter att du registerade dig.', 'email_not_confirmed_click_link' => 'Vänligen klicka på länken i det mail du fick strax efter att du registerade dig.',
'email_not_confirmed_resend' => 'Om du inte hittar mailet kan du begära en ny bekräftelse genom att fylla i formuläret nedan.', 'email_not_confirmed_resend' => 'Om du inte hittar mailet kan du begära en ny bekräftelse genom att fylla i formuläret nedan.',
'email_not_confirmed_resend_button' => 'Skicka bekräftelse på nytt', 'email_not_confirmed_resend_button' => 'Skicka bekräftelse på nytt',
]; ];

View File

@ -10,6 +10,7 @@ return [
'save' => 'Spara', 'save' => 'Spara',
'continue' => 'Fortsätt', 'continue' => 'Fortsätt',
'select' => 'Välj', 'select' => 'Välj',
'toggle_all' => 'Ändra alla',
'more' => 'Mer', 'more' => 'Mer',
/** /**
@ -26,6 +27,7 @@ return [
*/ */
'actions' => 'Åtgärder', 'actions' => 'Åtgärder',
'view' => 'Visa', 'view' => 'Visa',
'view_all' => 'Visa alla',
'create' => 'Skapa', 'create' => 'Skapa',
'update' => 'Uppdatera', 'update' => 'Uppdatera',
'edit' => 'Redigera', 'edit' => 'Redigera',
@ -40,6 +42,13 @@ return [
'remove' => 'Radera', 'remove' => 'Radera',
'add' => 'Lägg till', 'add' => 'Lägg till',
/**
* Sort Options
*/
'sort_name' => 'Namn',
'sort_created_at' => 'Skapad',
'sort_updated_at' => 'Uppdaterad',
/** /**
* Misc * Misc
*/ */
@ -60,6 +69,12 @@ return [
'view_profile' => 'Visa profil', 'view_profile' => 'Visa profil',
'edit_profile' => 'Redigera profil', 'edit_profile' => 'Redigera profil',
/**
* Layout tabs
*/
'tab_info' => 'Information',
'tab_content' => 'Innehåll',
/** /**
* Email Content * Email Content
*/ */

View File

@ -9,6 +9,7 @@ return [
'recently_updated_pages' => 'Sidor som uppdaterats nyligen', 'recently_updated_pages' => 'Sidor som uppdaterats nyligen',
'recently_created_chapters' => 'Kapitel som skapats nyligen', 'recently_created_chapters' => 'Kapitel som skapats nyligen',
'recently_created_books' => 'Böcker som skapats nyligen', 'recently_created_books' => 'Böcker som skapats nyligen',
'recently_created_shelves' => 'Hyllor som skapats nyligen',
'recently_update' => 'Nyligen uppdaterat', 'recently_update' => 'Nyligen uppdaterat',
'recently_viewed' => 'Nyligen läst', 'recently_viewed' => 'Nyligen läst',
'recent_activity' => 'Aktivitet', 'recent_activity' => 'Aktivitet',
@ -76,6 +77,7 @@ return [
'books_popular' => 'Populära böcker', 'books_popular' => 'Populära böcker',
'books_recent' => 'Nya böcker', 'books_recent' => 'Nya böcker',
'books_new' => 'Nya böcker', 'books_new' => 'Nya böcker',
'books_new_action' => 'Ny bok',
'books_popular_empty' => 'De mest populära böckerna kommer att visas här.', 'books_popular_empty' => 'De mest populära böckerna kommer att visas här.',
'books_new_empty' => 'De senaste böckerna som skapats kommer att visas här.', 'books_new_empty' => 'De senaste böckerna som skapats kommer att visas här.',
'books_create' => 'Skapa ny bok', 'books_create' => 'Skapa ny bok',
@ -91,7 +93,6 @@ return [
'books_permissions_updated' => 'Bokens rättigheter har uppdaterats', 'books_permissions_updated' => 'Bokens rättigheter har uppdaterats',
'books_empty_contents' => 'Det finns inga sidor eller kapitel i den här boken.', 'books_empty_contents' => 'Det finns inga sidor eller kapitel i den här boken.',
'books_empty_create_page' => 'Skapa en ny sida', 'books_empty_create_page' => 'Skapa en ny sida',
'books_empty_or' => 'eller',
'books_empty_sort_current_book' => 'Sortera aktuell bok', 'books_empty_sort_current_book' => 'Sortera aktuell bok',
'books_empty_add_chapter' => 'Lägg till kapitel', 'books_empty_add_chapter' => 'Lägg till kapitel',
'books_permissions_active' => 'Anpassade rättigheter är i bruk', 'books_permissions_active' => 'Anpassade rättigheter är i bruk',
@ -99,6 +100,11 @@ return [
'books_navigation' => 'Navigering', 'books_navigation' => 'Navigering',
'books_sort' => 'Sortera bokens innehåll', 'books_sort' => 'Sortera bokens innehåll',
'books_sort_named' => 'Sortera boken :bookName', 'books_sort_named' => 'Sortera boken :bookName',
'books_sort_name' => 'Sortera utifrån namn',
'books_sort_created' => 'Sortera utifrån skapelse',
'books_sort_updated' => 'Sortera utifrån uppdatering',
'books_sort_chapters_first' => 'Kapitel först',
'books_sort_chapters_last' => 'Kapitel sist',
'books_sort_show_other' => 'Visa andra böcker', 'books_sort_show_other' => 'Visa andra böcker',
'books_sort_save' => 'Spara ordning', 'books_sort_save' => 'Spara ordning',
@ -180,6 +186,8 @@ return [
'pages_revisions_created_by' => 'Skapad av', 'pages_revisions_created_by' => 'Skapad av',
'pages_revisions_date' => 'Revisionsdatum', 'pages_revisions_date' => 'Revisionsdatum',
'pages_revisions_number' => '#', 'pages_revisions_number' => '#',
'pages_revisions_numbered' => 'Revision #:id',
'pages_revisions_numbered_changes' => 'Revision #:id ändringar',
'pages_revisions_changelog' => 'Ändringslogg', 'pages_revisions_changelog' => 'Ändringslogg',
'pages_revisions_changes' => 'Ändringar', 'pages_revisions_changes' => 'Ändringar',
'pages_revisions_current' => 'Nuvarande version', 'pages_revisions_current' => 'Nuvarande version',
@ -208,11 +216,13 @@ return [
*/ */
'shelf' => 'Hylla', 'shelf' => 'Hylla',
'shelves' => 'Hyllor', 'shelves' => 'Hyllor',
'x_shelves' => ':count hylla|:count hyllor',
'shelves_long' => 'Bokhyllor', 'shelves_long' => 'Bokhyllor',
'shelves_empty' => 'Du har inte skapat någon hylla', 'shelves_empty' => 'Du har inte skapat någon hylla',
'shelves_create' => 'Skapa ny hylla', 'shelves_create' => 'Skapa ny hylla',
'shelves_popular' => 'Populära hyllor', 'shelves_popular' => 'Populära hyllor',
'shelves_new' => 'Ny hylla', 'shelves_new' => 'Nya hyllor',
'shelves_new_action' => 'Ny hylla',
'shelves_popular_empty' => 'De populäraste hyllorna kommer hamna här', 'shelves_popular_empty' => 'De populäraste hyllorna kommer hamna här',
'shelves_new_empty' => 'De senast skapade hyllorna kommer hamna här', 'shelves_new_empty' => 'De senast skapade hyllorna kommer hamna här',
'shelves_save' => 'Spara hylla', 'shelves_save' => 'Spara hylla',
@ -281,6 +291,7 @@ return [
'profile_not_created_pages' => ':userName har inte skapat några sidor', 'profile_not_created_pages' => ':userName har inte skapat några sidor',
'profile_not_created_chapters' => ':userName har inte skapat några kapitel', 'profile_not_created_chapters' => ':userName har inte skapat några kapitel',
'profile_not_created_books' => ':userName har inte skapat några böcker', 'profile_not_created_books' => ':userName har inte skapat några böcker',
'profile_not_created_shelves' => ':userName har inte skapat några hyllor',
/** /**
* Comments * Comments
@ -307,5 +318,6 @@ return [
*/ */
'revision_delete_confirm' => 'Är du säker på att du vill radera den här versionen?', 'revision_delete_confirm' => 'Är du säker på att du vill radera den här versionen?',
'revision_delete_success' => 'Revisionen raderad', 'revision_delete_success' => 'Revisionen raderad',
'revision_cannot_delete_latest' => 'Det går inte att ta bort den senaste versionen.' 'revision_cannot_delete_latest' => 'Det går inte att ta bort den senaste versionen.',
'revision_restore_confirm' => 'Är du säker på att du vill använda denna revision? Det nuvarande innehållet kommer att ersättas.'
]; ];

View File

@ -7,7 +7,6 @@ return [
* Contains all text strings used in the general settings sections of BookStack * Contains all text strings used in the general settings sections of BookStack
* including users and roles. * including users and roles.
*/ */
'settings' => 'Inställningar', 'settings' => 'Inställningar',
'settings_save' => 'Spara inställningar', 'settings_save' => 'Spara inställningar',
'settings_save_success' => 'Inställningarna har sparats', 'settings_save_success' => 'Inställningarna har sparats',
@ -15,13 +14,18 @@ return [
/** /**
* App settings * App settings
*/ */
'app_customization' => 'Sidanpassning',
'app_settings' => 'Appinställningar', 'app_features_security' => 'Funktioner och säkerhet',
'app_name' => 'Applikationsnamn', 'app_name' => 'Applikationsnamn',
'app_name_desc' => 'Namnet visas i sidhuvdet och i eventuella mail.', 'app_name_desc' => 'Namnet visas i sidhuvdet och i eventuella mail.',
'app_name_header' => 'Visa applikationsnamn i sidhuvudet?', 'app_name_header' => 'Visa applikationsnamn i sidhuvudet?',
'app_public_access' => 'Offentlig åtkomst',
'app_public_access_desc' => 'Om du aktiverar detta alternativ låter du icke inloggade besökare komma åt innehåll på din sida',
'app_public_access_desc_guest' => 'Åtkomst för icke inloggade besökare kan styras via användaren "Guest".',
'app_public_access_toggle' => 'Tillåt offentlig åtkomst',
'app_public_viewing' => 'Tillåt publikt innehåll?', 'app_public_viewing' => 'Tillåt publikt innehåll?',
'app_secure_images' => 'Aktivera högre säkerhet för bilduppladdningar?', 'app_secure_images' => 'Aktivera högre säkerhet för bilduppladdningar?',
'app_secure_images_toggle' => 'Aktivera säkrare bilduppladdningar',
'app_secure_images_desc' => 'Av prestandaskäl är alla bilder publika. Det här alternativet lägger till en slumpmässig, svårgissad sträng framför alla bild-URL:er. Se till att kataloglistning inte är aktivt för att förhindra åtkomst.', 'app_secure_images_desc' => 'Av prestandaskäl är alla bilder publika. Det här alternativet lägger till en slumpmässig, svårgissad sträng framför alla bild-URL:er. Se till att kataloglistning inte är aktivt för att förhindra åtkomst.',
'app_editor' => 'Redigeringsverktyg', 'app_editor' => 'Redigeringsverktyg',
'app_editor_desc' => 'Välj vilket redigeringsverktyg som ska användas av alla användare för att redigera sidor.', 'app_editor_desc' => 'Välj vilket redigeringsverktyg som ska användas av alla användare för att redigera sidor.',
@ -35,16 +39,19 @@ return [
'app_homepage_desc' => 'Välj en sida att använda som startsida istället för standardvyn. Den valda sidans rättigheter kommer att ignoreras.', 'app_homepage_desc' => 'Välj en sida att använda som startsida istället för standardvyn. Den valda sidans rättigheter kommer att ignoreras.',
'app_homepage_select' => 'Välj en sida', 'app_homepage_select' => 'Välj en sida',
'app_disable_comments' => 'Inaktivera kommentarer', 'app_disable_comments' => 'Inaktivera kommentarer',
'app_disable_comments_toggle' => 'Inaktivera kommentarer',
'app_disable_comments_desc' => 'Inaktivera kommentarer på alla sidor i applikationen. Befintliga kommentarer visas inte.', 'app_disable_comments_desc' => 'Inaktivera kommentarer på alla sidor i applikationen. Befintliga kommentarer visas inte.',
/** /**
* Registration settings * Registration settings
*/ */
'reg_settings' => 'Registreringsinställningar', 'reg_settings' => 'Registreringsinställningar',
'reg_allow' => 'Tillåt registrering?', 'reg_enable' => 'Tillåt registrering',
'reg_enable_toggle' => 'Tillåt registrering',
'reg_enable_desc' => 'När registrering tillåts kan användaren logga in som en användare. Vid registreringen ges de en förvald användarroll.',
'reg_default_role' => 'Standardroll efter registrering', 'reg_default_role' => 'Standardroll efter registrering',
'reg_confirm_email' => 'Kräv e-postbekräftelse?', 'reg_email_confirmation' => 'E-postbekräftelse',
'reg_email_confirmation_toggle' => 'Kräv e-postbekräftelse',
'reg_confirm_email_desc' => 'Om registrering begränas till vissa domäner kommer e-postbekräftelse alltid att krävas och den här inställningen kommer att ignoreras.', 'reg_confirm_email_desc' => 'Om registrering begränas till vissa domäner kommer e-postbekräftelse alltid att krävas och den här inställningen kommer att ignoreras.',
'reg_confirm_restrict_domain' => 'Begränsa registrering till viss domän', 'reg_confirm_restrict_domain' => 'Begränsa registrering till viss domän',
'reg_confirm_restrict_domain_desc' => 'Ange en kommaseparerad lista över e-postdomäner till vilka du vill begränsa registrering. Användare kommer att skickas ett mail för att bekräfta deras e-post innan de får logga in. <br> Notera att användare kommer att kunna ändra sin e-postadress efter lyckad registrering.', 'reg_confirm_restrict_domain_desc' => 'Ange en kommaseparerad lista över e-postdomäner till vilka du vill begränsa registrering. Användare kommer att skickas ett mail för att bekräfta deras e-post innan de får logga in. <br> Notera att användare kommer att kunna ändra sin e-postadress efter lyckad registrering.',
@ -53,7 +60,6 @@ return [
/** /**
* Maintenance settings * Maintenance settings
*/ */
'maint' => 'Underhåll', 'maint' => 'Underhåll',
'maint_image_cleanup' => 'Rensa bilder', 'maint_image_cleanup' => 'Rensa bilder',
'maint_image_cleanup_desc' => "Söker igenom innehåll i sidor & revisioner för att se vilka bilder och teckningar som är i bruk och vilka som är överflödiga. Se till att ta en komplett backup av databas och bilder innan du kör detta.", 'maint_image_cleanup_desc' => "Söker igenom innehåll i sidor & revisioner för att se vilka bilder och teckningar som är i bruk och vilka som är överflödiga. Se till att ta en komplett backup av databas och bilder innan du kör detta.",
@ -66,7 +72,6 @@ return [
/** /**
* Role settings * Role settings
*/ */
'roles' => 'Roller', 'roles' => 'Roller',
'role_user_roles' => 'Användarroller', 'role_user_roles' => 'Användarroller',
'role_create' => 'Skapa ny roll', 'role_create' => 'Skapa ny roll',
@ -102,13 +107,19 @@ return [
/** /**
* Users * Users
*/ */
'users' => 'Användare', 'users' => 'Användare',
'user_profile' => 'Användarprofil', 'user_profile' => 'Användarprofil',
'users_add_new' => 'Lägg till användare', 'users_add_new' => 'Lägg till användare',
'users_search' => 'Sök användare', 'users_search' => 'Sök användare',
'users_details' => 'Användarinformation',
'users_details_desc' => 'Ange ett visningsnamn och en e-postadress för den här användaren. E-postadressen kommer att användas vid inloggningen.',
'users_details_desc_no_email' => 'Ange ett visningsnamn för den här användaren så att andra kan känna igen den.',
'users_role' => 'Användarroller', 'users_role' => 'Användarroller',
'users_role_desc' => 'Välj vilka roller den här användaren ska tilldelas. Om en användare har tilldelats flera roller kommer behörigheterna från dessa roller att staplas och de kommer att få alla rättigheter i de tilldelade rollerna.',
'users_password' => 'Användarlösenord',
'users_password_desc' => 'Ange ett lösenord som ska användas för att logga in på sidan. Lösenordet måste vara minst 5 tecken långt.',
'users_external_auth_id' => 'Externt ID för autentisering', 'users_external_auth_id' => 'Externt ID för autentisering',
'users_external_auth_id_desc' => 'Detta är det ID som används för att matcha användaren när den kommunicerar med ditt LDAP-system.',
'users_password_warning' => 'Fyll i nedanstående fält endast om du vill byta lösenord:', 'users_password_warning' => 'Fyll i nedanstående fält endast om du vill byta lösenord:',
'users_system_public' => 'Den här användaren representerar eventuella gäster som använder systemet. Den kan inte användas för att logga in utan tilldeles automatiskt.', 'users_system_public' => 'Den här användaren representerar eventuella gäster som använder systemet. Den kan inte användas för att logga in utan tilldeles automatiskt.',
'users_delete' => 'Ta bort användare', 'users_delete' => 'Ta bort användare',
@ -121,7 +132,8 @@ return [
'users_edit_success' => 'Användaren har uppdaterats', 'users_edit_success' => 'Användaren har uppdaterats',
'users_avatar' => 'Avatar', 'users_avatar' => 'Avatar',
'users_avatar_desc' => 'Bilden bör vara kvadratisk och ca 256px stor.', 'users_avatar_desc' => 'Bilden bör vara kvadratisk och ca 256px stor.',
'users_preferred_language' => 'Språk', 'users_preferred_language' => 'Föredraget språk',
'users_preferred_language_desc' => 'Det här alternativet kommer att ändra det språk som används i användargränssnittet. Detta påverkar inget användarskapat innehåll.',
'users_social_accounts' => 'Anslutna konton', 'users_social_accounts' => 'Anslutna konton',
'users_social_accounts_info' => 'Här kan du ansluta dina andra konton för snabbare och smidigare inloggning. Om du kopplar från en tjänst här kommer de behörigheter som tidigare givits inte att tas bort - ta bort behörigheter genom att logga in på ditt konto på tjänsten i fråga.', 'users_social_accounts_info' => 'Här kan du ansluta dina andra konton för snabbare och smidigare inloggning. Om du kopplar från en tjänst här kommer de behörigheter som tidigare givits inte att tas bort - ta bort behörigheter genom att logga in på ditt konto på tjänsten i fråga.',
'users_social_connect' => 'Anslut konto', 'users_social_connect' => 'Anslut konto',

View File

@ -12,7 +12,6 @@ return [
| as the size rules. Feel free to tweak each of these messages here. | as the size rules. Feel free to tweak each of these messages here.
| |
*/ */
'accepted' => ':attribute måste godkännas.', 'accepted' => ':attribute måste godkännas.',
'active_url' => ':attribute är inte en giltig URL.', 'active_url' => ':attribute är inte en giltig URL.',
'after' => ':attribute måste vara efter :date.', 'after' => ':attribute måste vara efter :date.',
@ -76,6 +75,7 @@ return [
'timezone' => ':attribute måste vara en giltig tidszon.', 'timezone' => ':attribute måste vara en giltig tidszon.',
'unique' => ':attribute är upptaget', 'unique' => ':attribute är upptaget',
'url' => 'Formatet på :attribute är ogiltigt.', 'url' => 'Formatet på :attribute är ogiltigt.',
'uploaded' => 'Filen kunde inte laddas upp. Servern kanske inte tillåter filer med denna storlek.',
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -87,7 +87,6 @@ return [
| specify a specific custom language line for a given attribute rule. | specify a specific custom language line for a given attribute rule.
| |
*/ */
'custom' => [ 'custom' => [
'password-confirm' => [ 'password-confirm' => [
'required_with' => 'Lösenordet måste bekräftas', 'required_with' => 'Lösenordet måste bekräftas',
@ -104,7 +103,6 @@ return [
| of "email". This simply helps us make messages a little cleaner. | of "email". This simply helps us make messages a little cleaner.
| |
*/ */
'attributes' => [], 'attributes' => [],
]; ];

View File

@ -1,9 +1,7 @@
<?php <?php
/** /**
* Activity text strings. * Activity text strings. / Текстові рядки активності.
* Is used for all the text within activity logs & notifications. * Is used for all the text within activity logs & notifications. / Використовується для всього тексту в журналах активності та сповіщеннях.
* Текстові рядки активності.
* Використовується для всього тексту в журналах активності та сповіщеннях.
*/ */
return [ return [

View File

@ -1,10 +1,8 @@
<?php <?php
/** /**
* Authentication Language Lines * Authentication Language Lines
* The following language lines are used during authentication for various * The following language lines are used during authentication for various / Під час автентифікації використовуються наступні лінії мов для різних повідомлень
* messages that we need to display to the user. * messages that we need to display to the user. / які нам потрібно показати користувачеві.
* Під час автентифікації використовуються наступні лінії мов для різних повідомлень
* які нам потрібно показати користувачеві.
*/ */
return [ return [
@ -18,7 +16,7 @@ return [
'sign_up_with' => 'Зареєструватись з :socialDriver', 'sign_up_with' => 'Зареєструватись з :socialDriver',
'logout' => 'Вихід', 'logout' => 'Вихід',
'name' => 'Імя', 'name' => 'Ім\'я',
'username' => 'Логін', 'username' => 'Логін',
'email' => 'Email', 'email' => 'Email',
'password' => 'Пароль', 'password' => 'Пароль',
@ -28,6 +26,8 @@ return [
'remember_me' => 'Запам’ятати мене', 'remember_me' => 'Запам’ятати мене',
'ldap_email_hint' => 'Введіть email для цього облікового запису.', 'ldap_email_hint' => 'Введіть email для цього облікового запису.',
'create_account' => 'Створити обліковий запис', 'create_account' => 'Створити обліковий запис',
'already_have_account' => 'Вже є обліковий запис?',
'dont_have_account' => 'Немає облікового запису?',
'social_login' => 'Вхід через соціальну мережу', 'social_login' => 'Вхід через соціальну мережу',
'social_registration' => 'Реєстрація через соціальну мережу', 'social_registration' => 'Реєстрація через соціальну мережу',
'social_registration_text' => 'Реєстрація і вхід через інший сервіс', 'social_registration_text' => 'Реєстрація і вхід через інший сервіс',
@ -35,7 +35,7 @@ return [
'register_thanks' => 'Дякуємо за реєстрацію!', 'register_thanks' => 'Дякуємо за реєстрацію!',
'register_confirm' => 'Будь ласка, перевірте свою електронну пошту та натисніть кнопку підтвердження, щоб отримати доступ до :appName.', 'register_confirm' => 'Будь ласка, перевірте свою електронну пошту та натисніть кнопку підтвердження, щоб отримати доступ до :appName.',
'registrations_disabled' => 'Реєстрацію вимкнено', 'registrations_disabled' => 'Реєстрацію вимкнено',
'registration_email_domain_invalid' => 'Цей домен електронної пошти не має доступу до реєстрації', 'registration_email_domain_invalid' => 'Цей домен електронної пошти заборонений для реєстрації',
'register_success' => 'Дякуємо за реєстрацію! Ви зареєстровані та ввійшли в систему.', 'register_success' => 'Дякуємо за реєстрацію! Ви зареєстровані та ввійшли в систему.',
@ -64,4 +64,4 @@ return [
'email_not_confirmed_click_link' => 'Будь-ласка, натисніть на посилання в електронному листі, яке було надіслано після реєстрації.', 'email_not_confirmed_click_link' => 'Будь-ласка, натисніть на посилання в електронному листі, яке було надіслано після реєстрації.',
'email_not_confirmed_resend' => 'Якщо ви не можете знайти електронний лист, ви можете повторно надіслати підтвердження електронною поштою, на формі нижче.', 'email_not_confirmed_resend' => 'Якщо ви не можете знайти електронний лист, ви можете повторно надіслати підтвердження електронною поштою, на формі нижче.',
'email_not_confirmed_resend_button' => 'Повторне підтвердження електронної пошти', 'email_not_confirmed_resend_button' => 'Повторне підтвердження електронної пошти',
]; ];

View File

@ -1,7 +1,6 @@
<?php <?php
/** /**
* Common elements found throughout many areas of BookStack. * Common elements found throughout many areas of BookStack. / Загальні елементи, використовуються в багатьох областях BookStack.
* Загальні елементи, використовуються в багатьох областях BookStack.
*/ */
return [ return [
@ -12,6 +11,7 @@ return [
'save' => 'Зберегти', 'save' => 'Зберегти',
'continue' => 'Продовжити', 'continue' => 'Продовжити',
'select' => 'Вибрати', 'select' => 'Вибрати',
'toggle_all' => 'Увімкнути все',
'more' => 'Ще', 'more' => 'Ще',
// Form Labels // Form Labels
@ -23,7 +23,8 @@ return [
// Actions // Actions
'actions' => 'Дії', 'actions' => 'Дії',
'view' => 'Перегляд', 'view' => 'Подивитись',
'view_all' => 'Подивитись все',
'create' => 'Створити', 'create' => 'Створити',
'update' => 'Оновити', 'update' => 'Оновити',
'edit' => 'Редагувати', 'edit' => 'Редагувати',
@ -37,6 +38,11 @@ return [
'reset' => 'Скинути', 'reset' => 'Скинути',
'remove' => 'Видалити', 'remove' => 'Видалити',
'add' => 'Додати', 'add' => 'Додати',
// Sort Options
'sort_name' => 'Ім\'я',
'sort_created_at' => 'Дата створення',
'sort_updated_at' => 'Дата оновлення',
// Misc // Misc
'deleted_user' => 'Видалений користувач', 'deleted_user' => 'Видалений користувач',
@ -53,8 +59,12 @@ return [
// Header // Header
'view_profile' => 'Переглянути профіль', 'view_profile' => 'Переглянути профіль',
'edit_profile' => 'Редагувати профіль', 'edit_profile' => 'Редагувати профіль',
// Layout tabs
'tab_info' => 'Інфо',
'tab_content' => 'Вміст',
// Email Content // Email Content
'email_action_help' => 'Якщо у вас виникають проблеми при натисканні кнопки ":actionText", скопіюйте та вставте URL у свій веб-браузер:', 'email_action_help' => 'Якщо у вас виникають проблеми при натисканні кнопки ":actionText", скопіюйте та вставте URL у свій веб-браузер:',
'email_rights' => 'Всі права захищені', 'email_rights' => 'Всі права захищені',
]; ];

View File

@ -1,7 +1,6 @@
<?php <?php
/** /**
* Text used in custom JavaScript driven components. * Text used in custom JavaScript driven components. / Текст використовується в індивідуальних компонентах, керованих JavaScript.
* Текст використовується в індивідуальних компонентах, керованих JavaScript.
*/ */
return [ return [

View File

@ -1,9 +1,7 @@
<?php <?php
/** /**
* Text used for 'Entities' (Document Structure Elements) such as * Text used for 'Entities' (Document Structure Elements) such as / Текст використовується для "об'єктів" (елементів структури документів), таких як
* Books, Shelves, Chapters & Pages * Books, Shelves, Chapters & Pages / Книги, Полиці, Розділи та Сторінки
* Текст використовується для "об'єктів" (елементів структури документів), таких як
* Книги, Полиці, Розділи та Сторінки
*/ */
return [ return [
@ -13,6 +11,7 @@ return [
'recently_updated_pages' => 'Нещодавно оновлені сторінки', 'recently_updated_pages' => 'Нещодавно оновлені сторінки',
'recently_created_chapters' => 'Нещодавно створені розділи', 'recently_created_chapters' => 'Нещодавно створені розділи',
'recently_created_books' => 'Нещодавно створені книги', 'recently_created_books' => 'Нещодавно створені книги',
'recently_created_shelves' => 'Нещодавно створені полиці',
'recently_update' => 'Недавно оновлено', 'recently_update' => 'Недавно оновлено',
'recently_viewed' => 'Недавно переглянуто', 'recently_viewed' => 'Недавно переглянуто',
'recent_activity' => 'Остання активність', 'recent_activity' => 'Остання активність',
@ -37,7 +36,7 @@ return [
// Permissions and restrictions // Permissions and restrictions
'permissions' => 'Дозволи', 'permissions' => 'Дозволи',
'permissions_intro' => 'Після ввімкнення ці дозволи будуть мати пріоритет над усіма дозволеними ролями.', 'permissions_intro' => 'Після ввімкнення ці дозволи будуть мати вищий пріоритет ніж інші дозволи ролей.',
'permissions_enable' => 'Увімкнути спеціальні дозволи', 'permissions_enable' => 'Увімкнути спеціальні дозволи',
'permissions_save' => 'Зберегти дозволи', 'permissions_save' => 'Зберегти дозволи',
@ -69,11 +68,13 @@ return [
// Shelves // Shelves
'shelf' => 'Полиця', 'shelf' => 'Полиця',
'shelves' => 'Полиці', 'shelves' => 'Полиці',
'x_shelves' => ':count Полиця|:count Полиць',
'shelves_long' => 'Книжкові полиці', 'shelves_long' => 'Книжкові полиці',
'shelves_empty' => 'Жодних полиць не було створено', 'shelves_empty' => 'Жодних полиць не було створено',
'shelves_create' => 'Створити нову полицю', 'shelves_create' => 'Створити нову полицю',
'shelves_popular' => 'Популярні полиці', 'shelves_popular' => 'Популярні полиці',
'shelves_new' => 'Нові полиці', 'shelves_new' => 'Нові полиці',
'shelves_new_action' => 'Нова полиця',
'shelves_popular_empty' => 'Найпопулярніші полиці з\'являться тут.', 'shelves_popular_empty' => 'Найпопулярніші полиці з\'являться тут.',
'shelves_new_empty' => 'Тут будуть з\'являтися останні створені полиці.', 'shelves_new_empty' => 'Тут будуть з\'являтися останні створені полиці.',
'shelves_save' => 'Зберегти полицю', 'shelves_save' => 'Зберегти полицю',
@ -104,6 +105,7 @@ return [
'books_popular' => 'Популярні книги', 'books_popular' => 'Популярні книги',
'books_recent' => 'Останні книги', 'books_recent' => 'Останні книги',
'books_new' => 'Нові книги', 'books_new' => 'Нові книги',
'books_new_action' => 'Нова книга',
'books_popular_empty' => 'Найпопулярніші книги з\'являться тут.', 'books_popular_empty' => 'Найпопулярніші книги з\'являться тут.',
'books_new_empty' => 'Найновіші книги з\'являться тут.', 'books_new_empty' => 'Найновіші книги з\'являться тут.',
'books_create' => 'Створити нову книгу', 'books_create' => 'Створити нову книгу',
@ -119,7 +121,6 @@ return [
'books_permissions_updated' => 'Дозволи на книгу оновлено', 'books_permissions_updated' => 'Дозволи на книгу оновлено',
'books_empty_contents' => 'Для цієї книги не створено жодної сторінки або розділів.', 'books_empty_contents' => 'Для цієї книги не створено жодної сторінки або розділів.',
'books_empty_create_page' => 'Створити нову сторінку', 'books_empty_create_page' => 'Створити нову сторінку',
'books_empty_or' => 'або',
'books_empty_sort_current_book' => 'Сортувати поточну книгу', 'books_empty_sort_current_book' => 'Сортувати поточну книгу',
'books_empty_add_chapter' => 'Додати розділ', 'books_empty_add_chapter' => 'Додати розділ',
'books_permissions_active' => 'Діючі дозволи на книгу', 'books_permissions_active' => 'Діючі дозволи на книгу',
@ -127,6 +128,11 @@ return [
'books_navigation' => 'Навігація по книзі', 'books_navigation' => 'Навігація по книзі',
'books_sort' => 'Сортувати вміст книги', 'books_sort' => 'Сортувати вміст книги',
'books_sort_named' => 'Сортувати книгу :bookName', 'books_sort_named' => 'Сортувати книгу :bookName',
'books_sort_name' => 'Сортувати за назвою',
'books_sort_created' => 'Сортувати за датою створення',
'books_sort_updated' => 'Сортувати за датою оновлення',
'books_sort_chapters_first' => 'Спершу розділи',
'books_sort_chapters_last' => 'Розділи в кінці',
'books_sort_show_other' => 'Показати інші книги', 'books_sort_show_other' => 'Показати інші книги',
'books_sort_save' => 'Зберегти нове замовлення', 'books_sort_save' => 'Зберегти нове замовлення',
@ -204,6 +210,8 @@ return [
'pages_revisions_created_by' => 'Створена', 'pages_revisions_created_by' => 'Створена',
'pages_revisions_date' => 'Дата версії', 'pages_revisions_date' => 'Дата версії',
'pages_revisions_number' => '#', 'pages_revisions_number' => '#',
'pages_revisions_numbered' => 'Версія #:id',
'pages_revisions_numbered_changes' => 'Зміни версії #:id',
'pages_revisions_changelog' => 'Історія змін', 'pages_revisions_changelog' => 'Історія змін',
'pages_revisions_changes' => 'Зміни', 'pages_revisions_changes' => 'Зміни',
'pages_revisions_current' => 'Поточна версія', 'pages_revisions_current' => 'Поточна версія',
@ -218,7 +226,7 @@ return [
'pages_editing_draft_notification' => 'Ви наразі редагуєте чернетку, що була збережена останньою :timeDiff.', 'pages_editing_draft_notification' => 'Ви наразі редагуєте чернетку, що була збережена останньою :timeDiff.',
'pages_draft_edited_notification' => 'З того часу ця сторінка була оновлена. Рекомендуємо відмовитися від цього проекту.', 'pages_draft_edited_notification' => 'З того часу ця сторінка була оновлена. Рекомендуємо відмовитися від цього проекту.',
'pages_draft_edit_active' => [ 'pages_draft_edit_active' => [
'start_a' => ':count користувачі(в) почала редагувати цю сторінку', 'start_a' => ':count користувачі(в) почали редагувати цю сторінку',
'start_b' => ':userName розпочав редагування цієї сторінки', 'start_b' => ':userName розпочав редагування цієї сторінки',
'time_a' => 'з моменту останньої оновлення сторінки', 'time_a' => 'з моменту останньої оновлення сторінки',
'time_b' => 'за останні :minCount хвилин', 'time_b' => 'за останні :minCount хвилин',
@ -269,6 +277,7 @@ return [
'profile_not_created_pages' => ':userName не створив жодної сторінки', 'profile_not_created_pages' => ':userName не створив жодної сторінки',
'profile_not_created_chapters' => ':userName не створив жодного розділу', 'profile_not_created_chapters' => ':userName не створив жодного розділу',
'profile_not_created_books' => ':userName не створив жодної книги', 'profile_not_created_books' => ':userName не створив жодної книги',
'profile_not_created_shelves' => ':userName не створив жодної полиці',
// Comments // Comments
'comment' => 'Коментар', 'comment' => 'Коментар',
@ -290,6 +299,7 @@ return [
// Revision // Revision
'revision_delete_confirm' => 'Ви впевнені, що хочете видалити цю версію?', 'revision_delete_confirm' => 'Ви впевнені, що хочете видалити цю версію?',
'revision_restore_confirm' => 'Дійсно відновити цю версію? Вміст поточної сторінки буде замінено.',
'revision_delete_success' => 'Версія видалена', 'revision_delete_success' => 'Версія видалена',
'revision_cannot_delete_latest' => 'Неможливо видалити останню версію.' 'revision_cannot_delete_latest' => 'Неможливо видалити останню версію.'
]; ];

View File

@ -1,7 +1,6 @@
<?php <?php
/** /**
* Text shown in error messaging. * Text shown in error messaging. / Текст відображається в повідомленнях про помилку.
* Текст відображається в повідомленнях про помилку.
*/ */
return [ return [
@ -37,6 +36,7 @@ return [
'uploaded' => 'Сервер не дозволяє завантажувати файли такого розміру. Спробуйте менший розмір файлу.', 'uploaded' => 'Сервер не дозволяє завантажувати файли такого розміру. Спробуйте менший розмір файлу.',
'image_upload_error' => 'Виникла помилка під час завантаження зображення', 'image_upload_error' => 'Виникла помилка під час завантаження зображення',
'image_upload_type_error' => 'Тип завантаженого зображення недійсний', 'image_upload_type_error' => 'Тип завантаженого зображення недійсний',
'file_upload_timeout' => 'Тайм-аут при завантаженні файлу',
// Attachments // Attachments
'attachment_page_mismatch' => 'Невідповідність сторінки при оновленні вкладень', 'attachment_page_mismatch' => 'Невідповідність сторінки при оновленні вкладень',
@ -64,6 +64,7 @@ return [
'role_cannot_be_edited' => 'Цю роль не можна редагувати', 'role_cannot_be_edited' => 'Цю роль не можна редагувати',
'role_system_cannot_be_deleted' => 'Ця роль є системною, і її не можна видалити', 'role_system_cannot_be_deleted' => 'Ця роль є системною, і її не можна видалити',
'role_registration_default_cannot_delete' => 'Цю роль не можна видалити, бо вона встановлена як роль реєстрації за умовчанням', 'role_registration_default_cannot_delete' => 'Цю роль не можна видалити, бо вона встановлена як роль реєстрації за умовчанням',
'role_cannot_remove_only_admin' => 'Цей користувач є єдиним користувачем, призначеним для ролі адміністратора. Призначте роль адміністратора іншому користувачеві, перш ніж спробувати його видалити.',
// Comments // Comments
'comment_list' => 'Під час отримання коментарів сталася помилка.', 'comment_list' => 'Під час отримання коментарів сталася помилка.',

View File

@ -1,11 +1,8 @@
<?php <?php
/** /**
* Pagination Language Lines * Pagination Language Lines / Лінії мови вирівнювання по сторінках
* The following language lines are used by the paginator library to build * The following language lines are used by the paginator library to build / Наступні мовні лінії використовуються бібліотекою журналіста для створення
* the simple pagination links. * the simple pagination links. / простих посилань на сторінки.
* Лінії мови вирівнювання по сторінках
* Наступні мовні лінії використовуються бібліотекою журналіста для створення
* простих посилань на сторінки.
*/ */
return [ return [

View File

@ -1,9 +1,8 @@
<?php <?php
/** /**
* Password Reminder Language Lines * Password Reminder Language Lines / Нагадування про пароль
* The following language lines are the default lines which match reasons * The following language lines are the default lines which match reasons
* that are given by the password broker for a password update attempt has failed. * that are given by the password broker for a password update attempt has failed.
* Нагадування про пароль
*/ */
return [ return [

View File

@ -1,11 +1,8 @@
<?php <?php
/** /**
* Settings text strings * Settings text strings / Текст налаштувань
* Contains all text strings used in the general settings sections of BookStack * Contains all text strings used in the general settings sections of BookStack / Містить всі текстові рядки, що використовуються в розділах загальної настройки BookStack
* including users and roles. * including users and roles. / включаючи користувачів та ролі.
* Текст налаштувань
* Містить всі текстові рядки, що використовуються в розділах загальної настройки BookStack
* включаючи користувачів та ролі.
*/ */
return [ return [
@ -15,12 +12,18 @@ return [
'settings_save_success' => 'Налаштування збережено', 'settings_save_success' => 'Налаштування збережено',
// App Settings // App Settings
'app_settings' => 'Налаштування програми', 'app_customization' => 'Налаштування',
'app_features_security' => 'Особливості та безпека',
'app_name' => 'Назва програми', 'app_name' => 'Назва програми',
'app_name_desc' => 'Ця назва відображається у заголовку та у всіх листах.', 'app_name_desc' => 'Ця назва відображається у заголовку та у всіх листах.',
'app_name_header' => 'Показати назву програми в заголовку?', 'app_name_header' => 'Показати назву програми в заголовку',
'app_public_access' => 'Публічнй доступ',
'app_public_access_desc' => 'Увімкнення цієї опції дозволить відвідувачам, які не увійшли в систему, отримати доступ до вмісту у вашому екземплярі BookStack.',
'app_public_access_desc_guest' => 'Доступ для публічних відвідувачів можна контролювати через користувача "Гість".',
'app_public_access_toggle' => 'Дозволити публічний доступ',
'app_public_viewing' => 'Дозволити публічний перегляд?', 'app_public_viewing' => 'Дозволити публічний перегляд?',
'app_secure_images' => 'Увімкунти вищі налаштування безпеки для завантаження зображень?', 'app_secure_images' => 'Вищі налаштування безпеки для зображень',
'app_secure_images_toggle' => 'Увімкунти вищі налаштування безпеки для завантаження зображень',
'app_secure_images_desc' => 'З міркувань продуктивності всі зображення є загальнодоступними. Цей параметр додає випадковий, важко передбачуваний рядок перед URL-адресами зображень. Переконайтеся, що індексація каталогів не активована, щоб запобігти легкому доступу.', 'app_secure_images_desc' => 'З міркувань продуктивності всі зображення є загальнодоступними. Цей параметр додає випадковий, важко передбачуваний рядок перед URL-адресами зображень. Переконайтеся, що індексація каталогів не активована, щоб запобігти легкому доступу.',
'app_editor' => 'Редактор сторінок', 'app_editor' => 'Редактор сторінок',
'app_editor_desc' => 'Виберіть, який редактор буде використовуватися всіма користувачами для редагування сторінок.', 'app_editor_desc' => 'Виберіть, який редактор буде використовуватися всіма користувачами для редагування сторінок.',
@ -34,15 +37,19 @@ return [
'app_homepage_desc' => 'Виберіть сторінку, яка відображатиметься на домашній сторінці замість перегляду за умовчанням. Права на сторінку не враховуються для вибраних сторінок.', 'app_homepage_desc' => 'Виберіть сторінку, яка відображатиметься на домашній сторінці замість перегляду за умовчанням. Права на сторінку не враховуються для вибраних сторінок.',
'app_homepage_select' => 'Вибрати сторінку', 'app_homepage_select' => 'Вибрати сторінку',
'app_disable_comments' => 'Вимкнути коментарі', 'app_disable_comments' => 'Вимкнути коментарі',
'app_disable_comments_toggle' => 'Вимкнути коментарі',
'app_disable_comments_desc' => 'Вимкнути коментарі на всіх сторінках програми. Існуючі коментарі не відображаються.', 'app_disable_comments_desc' => 'Вимкнути коментарі на всіх сторінках програми. Існуючі коментарі не відображаються.',
// Registration Settings // Registration Settings
'reg_settings' => 'Налаштування реєстрації', 'reg_settings' => 'Реєстрація',
'reg_allow' => 'Дозволити реєстрацію?', 'reg_enable' => 'Дозволити реєстрацію',
'reg_enable_toggle' => 'Дозволити реєстрацію',
'reg_enable_desc' => 'При включенні реєстрації відвідувач зможе зареєструватися як користувач програми. Після реєстрації їм надається єдина роль користувача за замовчуванням.',
'reg_default_role' => 'Роль користувача за умовчанням після реєстрації', 'reg_default_role' => 'Роль користувача за умовчанням після реєстрації',
'reg_confirm_email' => 'Потрібне підтвердження електронною поштою?', 'reg_email_confirmation' => 'Підтвердження електронною поштою',
'reg_email_confirmation_toggle' => 'Необхідне підтвердження електронною поштою',
'reg_confirm_email_desc' => 'Якщо використовується обмеження домену, то підтвердження електронною поштою буде потрібно, а нижче значення буде проігноровано.', 'reg_confirm_email_desc' => 'Якщо використовується обмеження домену, то підтвердження електронною поштою буде потрібно, а нижче значення буде проігноровано.',
'reg_confirm_restrict_domain' => 'Обмежити реєстрацію до домену', 'reg_confirm_restrict_domain' => 'Обмежити по домену',
'reg_confirm_restrict_domain_desc' => 'Введіть список розділених комами доменів електронної пошти, до яких ви хочете обмежити реєстрацію. Користувачам буде надіслано електронне повідомлення для підтвердження своєї адреси, перш ніж дозволяти взаємодіяти з додатком. <br> Зауважте, що користувачі зможуть змінювати свої електронні адреси після успішної реєстрації.', 'reg_confirm_restrict_domain_desc' => 'Введіть список розділених комами доменів електронної пошти, до яких ви хочете обмежити реєстрацію. Користувачам буде надіслано електронне повідомлення для підтвердження своєї адреси, перш ніж дозволяти взаємодіяти з додатком. <br> Зауважте, що користувачі зможуть змінювати свої електронні адреси після успішної реєстрації.',
'reg_confirm_restrict_domain_placeholder' => 'Не встановлено обмежень', 'reg_confirm_restrict_domain_placeholder' => 'Не встановлено обмежень',
@ -94,8 +101,15 @@ return [
'user_profile' => 'Профіль користувача', 'user_profile' => 'Профіль користувача',
'users_add_new' => 'Додати нового користувача', 'users_add_new' => 'Додати нового користувача',
'users_search' => 'Пошук користувачів', 'users_search' => 'Пошук користувачів',
'users_details' => 'Відомості про користувача',
'users_details_desc' => 'Встановіть ім\'я та електронну адресу для цього користувача. Адреса електронної пошти буде використана для входу до програми.',
'users_details_desc_no_email' => 'Встановіть ім\'я для цього користувача, щоб інші могли його розпізнати.',
'users_role' => 'Ролі користувача', 'users_role' => 'Ролі користувача',
'users_role_desc' => 'Виберіть, до яких ролей буде призначено цього користувача. Якщо користувачеві призначено декілька ролей, дозволи з цих ролей будуть складатись і вони отримуватимуть усі можливості призначених ролей.',
'users_password' => 'Пароль користувача',
'users_password_desc' => 'Встановіть пароль для входу. Він повинен містити принаймні 5 символів.',
'users_external_auth_id' => 'Зовнішній ID автентифікації', 'users_external_auth_id' => 'Зовнішній ID автентифікації',
'users_external_auth_id_desc' => 'Цей ID використовується для пошуку збігу цього користувача під час зв\'язку з LDAP.',
'users_password_warning' => 'Тільки якщо ви хочете змінити свій пароль, заповніть поля нижче:', 'users_password_warning' => 'Тільки якщо ви хочете змінити свій пароль, заповніть поля нижче:',
'users_system_public' => 'Цей користувач представляє будь-яких гостьових користувачів, які відвідують ваш екземпляр. Його не можна використовувати для входу, але він призначається автоматично.', 'users_system_public' => 'Цей користувач представляє будь-яких гостьових користувачів, які відвідують ваш екземпляр. Його не можна використовувати для входу, але він призначається автоматично.',
'users_delete' => 'Видалити користувача', 'users_delete' => 'Видалити користувача',
@ -109,6 +123,7 @@ return [
'users_avatar' => 'Аватар користувача', 'users_avatar' => 'Аватар користувача',
'users_avatar_desc' => 'Це квадратне зображення має бути приблизно 256px.', 'users_avatar_desc' => 'Це квадратне зображення має бути приблизно 256px.',
'users_preferred_language' => 'Бажана мова', 'users_preferred_language' => 'Бажана мова',
'users_preferred_language_desc' => 'Цей параметр змінить мову інтерфейсу користувача в програмі. Не вплине на створений користувачем вміст.',
'users_social_accounts' => 'Соціальні акаунти', 'users_social_accounts' => 'Соціальні акаунти',
'users_social_accounts_info' => 'Тут ви можете підключити інші облікові записи для швидшого та легшого входу. Від\'єднання соціального облікового запису тут не дозволяється. Скасуйте доступ із налаштувань вашого профілю в пов\'язаній соціальній мережі.', 'users_social_accounts_info' => 'Тут ви можете підключити інші облікові записи для швидшого та легшого входу. Від\'єднання соціального облікового запису тут не дозволяється. Скасуйте доступ із налаштувань вашого профілю в пов\'язаній соціальній мережі.',
'users_social_connect' => 'Підключити обліковий запис', 'users_social_connect' => 'Підключити обліковий запис',

View File

@ -1,13 +1,9 @@
<?php <?php
/** /**
* Validation Lines * Validation Lines / Стрічки перевірки
* The following language lines contain the default error messages used by * The following language lines contain the default error messages used by / Наступні мовні лінії містять повідомлення про помилку за замовчуванням,
* the validator class. Some of these rules have multiple versions such * the validator class. Some of these rules have multiple versions such / що використовуються класом валідатора. Деякі з цих правил мають кілька версій,
* as the size rules. Feel free to tweak each of these messages here. * as the size rules. Feel free to tweak each of these messages here. / таких як правила розмірів. Ви можете налаштувати кожен з цих повідомлень тут.
* Стрічки перевірки
* Наступні мовні лінії містять повідомлення про помилку за замовчуванням,
* що використовуються класом валідатора. Деякі з цих правил мають кілька версій,
* таких як правила розмірів. Ви можете налаштувати кожен з цих повідомлень тут.
*/ */
return [ return [
@ -37,6 +33,7 @@ return [
'filled' => ':attribute поле обов\'язкове.', 'filled' => ':attribute поле обов\'язкове.',
'exists' => 'Вибраний :attribute недійсний.', 'exists' => 'Вибраний :attribute недійсний.',
'image' => ':attribute повинен бути зображенням.', 'image' => ':attribute повинен бути зображенням.',
'image_extension' => ':attribute повинен мати дійсне та підтримуване розширення зображення.',
'in' => 'Вибраний :attribute недійсний.', 'in' => 'Вибраний :attribute недійсний.',
'integer' => ':attribute повинен бути цілим числом.', 'integer' => ':attribute повинен бути цілим числом.',
'ip' => ':attribute повинна бути дійсною IP-адресою.', 'ip' => ':attribute повинна бути дійсною IP-адресою.',
@ -53,6 +50,7 @@ return [
'string' => ':attribute повинен бути принаймні :min символів.', 'string' => ':attribute повинен бути принаймні :min символів.',
'array' => ':attribute повинен містити принаймні :min елементів.', 'array' => ':attribute повинен містити принаймні :min елементів.',
], ],
'no_double_extension' => ':attribute повинен мати тільки одне розширення файлу.',
'not_in' => 'Вибраний :attribute недійсний.', 'not_in' => 'Вибраний :attribute недійсний.',
'numeric' => ':attribute повинен бути числом.', 'numeric' => ':attribute повинен бути числом.',
'regex' => ':attribute формат недійсний.', 'regex' => ':attribute формат недійсний.',
@ -73,6 +71,7 @@ return [
'timezone' => ':attribute повинен бути дійсною зоною.', 'timezone' => ':attribute повинен бути дійсною зоною.',
'unique' => ':attribute вже є.', 'unique' => ':attribute вже є.',
'url' => ':attribute формат недійсний.', 'url' => ':attribute формат недійсний.',
'uploaded' => 'Не вдалося завантажити файл. Сервер може не приймати файли такого розміру.',
// Custom validation lines // Custom validation lines
'custom' => [ 'custom' => [

View File

@ -15,5 +15,5 @@
<div class="form-group"> <div class="form-group">
<label for="password">{{ trans('auth.password') }}</label> <label for="password">{{ trans('auth.password') }}</label>
@include('form.password', ['name' => 'password', 'tabindex' => 2]) @include('form.password', ['name' => 'password', 'tabindex' => 1])
</div> </div>

View File

@ -27,7 +27,7 @@
</div> </div>
<div class="text-right"> <div class="text-right">
<button class="button primary" tabindex="3">{{ title_case(trans('auth.log_in')) }}</button> <button class="button primary" tabindex="1">{{ title_case(trans('auth.log_in')) }}</button>
</div> </div>
</div> </div>
@ -46,7 +46,7 @@
@endif @endif
@if(setting('registration-enabled', false)) @if(setting('registration-enabled', false))
<div class="text-center"> <div class="text-center pb-s">
<hr class="my-l"> <hr class="my-l">
<a href="{{ baseUrl('/register') }}">{{ trans('auth.dont_have_account') }}</a> <a href="{{ baseUrl('/register') }}">{{ trans('auth.dont_have_account') }}</a>
</div> </div>

View File

@ -20,7 +20,7 @@
<div class="grid third gap-xxl"> <div class="grid third gap-xxl">
<div> <div>
<div class="card mb-xl"> <div class="card mb-xl">
<h3>{{ trans('entities.pages_popular') }}</h3> <h3 class="card-title">{{ trans('entities.pages_popular') }}</h3>
<div class="px-m"> <div class="px-m">
@include('partials.entity-list', ['entities' => Views::getPopular(10, 0, 'page'), 'style' => 'compact']) @include('partials.entity-list', ['entities' => Views::getPopular(10, 0, 'page'), 'style' => 'compact'])
</div> </div>
@ -28,7 +28,7 @@
</div> </div>
<div> <div>
<div class="card mb-xl"> <div class="card mb-xl">
<h3>{{ trans('entities.books_popular') }}</h3> <h3 class="card-title">{{ trans('entities.books_popular') }}</h3>
<div class="px-m"> <div class="px-m">
@include('partials.entity-list', ['entities' => Views::getPopular(10, 0, 'book'), 'style' => 'compact']) @include('partials.entity-list', ['entities' => Views::getPopular(10, 0, 'book'), 'style' => 'compact'])
</div> </div>
@ -36,7 +36,7 @@
</div> </div>
<div> <div>
<div class="card mb-xl"> <div class="card mb-xl">
<h3>{{ trans('entities.chapters_popular') }}</h3> <h3 class="card-title">{{ trans('entities.chapters_popular') }}</h3>
<div class="px-m"> <div class="px-m">
@include('partials.entity-list', ['entities' => Views::getPopular(10, 0, 'chapter'), 'style' => 'compact']) @include('partials.entity-list', ['entities' => Views::getPopular(10, 0, 'chapter'), 'style' => 'compact'])
</div> </div>

View File

@ -1,5 +1,7 @@
<?php namespace Tests; <?php namespace Tests;
use BookStack\Entities\Bookshelf;
class HomepageTest extends TestCase class HomepageTest extends TestCase
{ {
@ -89,4 +91,33 @@ class HomepageTest extends TestCase
$this->setSettings(['app-homepage-type' => false]); $this->setSettings(['app-homepage-type' => false]);
$this->test_default_homepage_visible(); $this->test_default_homepage_visible();
} }
public function test_shelves_list_homepage_adheres_to_book_visibility_permissions()
{
$editor = $this->getEditor();
setting()->putUser($editor, 'bookshelves_view_type', 'list');
$this->setSettings(['app-homepage-type' => 'bookshelves']);
$this->asEditor();
$shelf = Bookshelf::query()->first();
$book = $shelf->books()->first();
// Ensure initially visible
$homeVisit = $this->get('/');
$homeVisit->assertElementContains('.content-wrap', $shelf->name);
$homeVisit->assertElementContains('.content-wrap', $book->name);
// Ensure book no longer visible without view permission
$editor->roles()->detach();
$this->giveUserPermissions($editor, ['bookshelf-view-all']);
$homeVisit = $this->get('/');
$homeVisit->assertElementContains('.content-wrap', $shelf->name);
$homeVisit->assertElementNotContains('.content-wrap', $book->name);
// Ensure is visible again with entity-level view permission
$this->setEntityRestrictions($book, ['view'], [$editor->roles()->first()]);
$homeVisit = $this->get('/');
$homeVisit->assertElementContains('.content-wrap', $shelf->name);
$homeVisit->assertElementContains('.content-wrap', $book->name);
}
} }

View File

@ -1 +1 @@
v0.26.0 v0.26.1