Merge branch 'master' into release

This commit is contained in:
Dan Brown 2021-06-04 23:08:59 +01:00
commit fa62c79b17
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
89 changed files with 1541 additions and 267 deletions

View File

@ -165,3 +165,5 @@ Francesco Franchina (ffranchina) :: Italian
Aimrane Kds (aimrane.kds) :: Arabic
whenwesober :: Indonesian
Rem (remkovdhoef) :: Dutch
syn7ax69 :: Bulgarian; Turkish
Blaade :: French

View File

@ -92,7 +92,7 @@ class Role extends Model implements Loggable
}
/**
* Get all visible roles
* Get all visible roles.
*/
public static function visible(): Collection
{
@ -104,7 +104,10 @@ class Role extends Model implements Loggable
*/
public static function restrictable(): Collection
{
return static::query()->where('system_name', '!=', 'admin')->get();
return static::query()
->where('system_name', '!=', 'admin')
->orderBy('display_name', 'asc')
->get();
}
/**

View File

@ -56,7 +56,7 @@ return [
'locale' => env('APP_LANG', 'en'),
// Locales available
'locales' => ['en', 'ar', 'bg', 'bs', 'ca', 'cs', 'da', 'de', 'de_informal', 'es', 'es_AR', 'fa', 'fr', 'he', 'hu', 'id', 'it', 'ja', 'ko', 'lv', 'nl', 'nb', 'pt', 'pt_BR', 'sk', 'sl', 'sv', 'pl', 'ru', 'th', 'tr', 'uk', 'vi', 'zh_CN', 'zh_TW',],
'locales' => ['en', 'ar', 'bg', 'bs', 'ca', 'cs', 'da', 'de', 'de_informal', 'es', 'es_AR', 'fa', 'fr', 'he', 'hr', 'hu', 'id', 'it', 'ja', 'ko', 'lv', 'nl', 'nb', 'pt', 'pt_BR', 'sk', 'sl', 'sv', 'pl', 'ru', 'th', 'tr', 'uk', 'vi', 'zh_CN', 'zh_TW',],
// Application Fallback Locale
'fallback_locale' => 'en',

View File

@ -2,12 +2,15 @@
use BookStack\Entities\Models\Page;
use BookStack\Entities\Tools\Markdown\CustomStrikeThroughExtension;
use BookStack\Exceptions\ImageUploadException;
use BookStack\Facades\Theme;
use BookStack\Theming\ThemeEvents;
use BookStack\Util\HtmlContentFilter;
use BookStack\Uploads\ImageRepo;
use DOMDocument;
use DOMNodeList;
use DOMXPath;
use Illuminate\Support\Str;
use League\CommonMark\CommonMarkConverter;
use League\CommonMark\Environment;
use League\CommonMark\Extension\Table\TableExtension;
@ -31,6 +34,7 @@ class PageContent
*/
public function setNewHTML(string $html)
{
$html = $this->extractBase64Images($this->page, $html);
$this->page->html = $this->formatHtml($html);
$this->page->text = $this->toPlainText();
$this->page->markdown = '';
@ -61,19 +65,65 @@ class PageContent
return $converter->convertToHtml($markdown);
}
/**
* Convert all base64 image data to saved images
*/
public function extractBase64Images(Page $page, string $htmlText): string
{
if (empty($htmlText) || strpos($htmlText, 'data:image') === false) {
return $htmlText;
}
$doc = $this->loadDocumentFromHtml($htmlText);
$container = $doc->documentElement;
$body = $container->childNodes->item(0);
$childNodes = $body->childNodes;
$xPath = new DOMXPath($doc);
$imageRepo = app()->make(ImageRepo::class);
$allowedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp'];
// Get all img elements with image data blobs
$imageNodes = $xPath->query('//img[contains(@src, \'data:image\')]');
foreach ($imageNodes as $imageNode) {
$imageSrc = $imageNode->getAttribute('src');
[$dataDefinition, $base64ImageData] = explode(',', $imageSrc, 2);
$extension = strtolower(preg_split('/[\/;]/', $dataDefinition)[1] ?? 'png');
// Validate extension
if (!in_array($extension, $allowedExtensions)) {
$imageNode->setAttribute('src', '');
continue;
}
// Save image from data with a random name
$imageName = 'embedded-image-' . Str::random(8) . '.' . $extension;
try {
$image = $imageRepo->saveNewFromData($imageName, base64_decode($base64ImageData), 'gallery', $page->id);
$imageNode->setAttribute('src', $image->url);
} catch (ImageUploadException $exception) {
$imageNode->setAttribute('src', '');
}
}
// Generate inner html as a string
$html = '';
foreach ($childNodes as $childNode) {
$html .= $doc->saveHTML($childNode);
}
return $html;
}
/**
* Formats a page's html to be tagged correctly within the system.
*/
protected function formatHtml(string $htmlText): string
{
if ($htmlText == '') {
if (empty($htmlText)) {
return $htmlText;
}
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTML(mb_convert_encoding($htmlText, 'HTML-ENTITIES', 'UTF-8'));
$doc = $this->loadDocumentFromHtml($htmlText);
$container = $doc->documentElement;
$body = $container->childNodes->item(0);
$childNodes = $body->childNodes;
@ -112,7 +162,7 @@ class PageContent
protected function updateLinks(DOMXPath $xpath, string $old, string $new)
{
$old = str_replace('"', '', $old);
$matchingLinks = $xpath->query('//body//*//*[@href="'.$old.'"]');
$matchingLinks = $xpath->query('//body//*//*[@href="' . $old . '"]');
foreach ($matchingLinks as $domElem) {
$domElem->setAttribute('href', $new);
}
@ -165,7 +215,7 @@ class PageContent
/**
* Render the page for viewing
*/
public function render(bool $blankIncludes = false) : string
public function render(bool $blankIncludes = false): string
{
$content = $this->page->html;
@ -191,9 +241,7 @@ class PageContent
return [];
}
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTML(mb_convert_encoding($htmlContent, 'HTML-ENTITIES', 'UTF-8'));
$doc = $this->loadDocumentFromHtml($htmlContent);
$xPath = new DOMXPath($doc);
$headers = $xPath->query("//h1|//h2|//h3|//h4|//h5|//h6");
@ -233,7 +281,7 @@ class PageContent
/**
* Remove any page include tags within the given HTML.
*/
protected function blankPageIncludes(string $html) : string
protected function blankPageIncludes(string $html): string
{
return preg_replace("/{{@\s?([0-9].*?)}}/", '', $html);
}
@ -241,7 +289,7 @@ class PageContent
/**
* Parse any include tags "{{@<page_id>#section}}" to be part of the page.
*/
protected function parsePageIncludes(string $html) : string
protected function parsePageIncludes(string $html): string
{
$matches = [];
preg_match_all("/{{@\s?([0-9].*?)}}/", $html, $matches);
@ -284,9 +332,7 @@ class PageContent
protected function fetchSectionOfPage(Page $page, string $sectionId): string
{
$topLevelTags = ['table', 'ul', 'ol'];
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML(mb_convert_encoding('<body>'.$page->html.'</body>', 'HTML-ENTITIES', 'UTF-8'));
$doc = $this->loadDocumentFromHtml('<body>' . $page->html . '</body>');
// Search included content for the id given and blank out if not exists.
$matchingElem = $doc->getElementById($sectionId);
@ -309,4 +355,15 @@ class PageContent
return $innerContent;
}
/**
* Create and load a DOMDocument from the given html content.
*/
protected function loadDocumentFromHtml(string $html): DOMDocument
{
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
return $doc;
}
}

View File

@ -60,6 +60,8 @@ class PageApiController extends ApiController
*
* Any HTML content provided should be kept to a single-block depth of plain HTML
* elements to remain compatible with the BookStack front-end and editors.
* Any images included via base64 data URIs will be extracted and saved as gallery
* images against the page during upload.
*/
public function create(Request $request)
{

View File

@ -28,6 +28,7 @@ class Localization
'es_AR' => 'es_AR',
'fr' => 'fr_FR',
'he' => 'he_IL',
'hr' => 'hr_HR',
'id' => 'id_ID',
'it' => 'it_IT',
'ja' => 'ja',

View File

@ -4,6 +4,16 @@ use BookStack\Entities\Models\Page;
use BookStack\Model;
use BookStack\Traits\HasCreatorAndUpdater;
/**
* @property int $id
* @property string $name
* @property string $url
* @property string $path
* @property string $type
* @property int $uploaded_to
* @property int $created_by
* @property int $updated_by
*/
class Image extends Model
{
use HasCreatorAndUpdater;

View File

@ -130,6 +130,17 @@ class ImageRepo
return $image;
}
/**
* Save a new image from an existing image data string.
* @throws ImageUploadException
*/
public function saveNewFromData(string $imageName, string $imageData, string $type, int $uploadedTo = 0)
{
$image = $this->imageService->saveNew($imageName, $imageData, $type, $uploadedTo);
$this->loadThumbs($image);
return $image;
}
/**
* Save a drawing the the database.
* @throws ImageUploadException

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -33,7 +33,7 @@ return [
'copy' => 'Копирай',
'reply' => 'Отговори',
'delete' => 'Изтрий',
'delete_confirm' => 'Confirm Deletion',
'delete_confirm' => 'Потвърдете изтриването',
'search' => 'Търси',
'search_clear' => 'Изчисти търсенето',
'reset' => 'Нулирай',
@ -88,6 +88,6 @@ return [
// Footer Link Options
// Not directly used but available for convenience to users.
'privacy_policy' => 'Privacy Policy',
'terms_of_service' => 'Terms of Service',
'privacy_policy' => 'Лични данни',
'terms_of_service' => 'Общи условия',
];

View File

@ -15,7 +15,7 @@ return [
'image_load_more' => 'Зареди повече',
'image_image_name' => 'Име на изображението',
'image_delete_used' => 'Това изображение е използвано в страницата по-долу.',
'image_delete_confirm_text' => 'Are you sure you want to delete this image?',
'image_delete_confirm_text' => 'Сигурни ли сте, че искате да изтриете това изображение?',
'image_select_image' => 'Изберете изображение',
'image_dropzone' => 'Поставете тук изображение или кликнете тук за да качите',
'images_deleted' => 'Изображението е изтрито',

View File

@ -22,13 +22,13 @@ return [
'meta_created_name' => 'Създадено преди :timeLength от :user',
'meta_updated' => 'Актуализирано :timeLength',
'meta_updated_name' => 'Актуализирано преди :timeLength от :user',
'meta_owned_name' => 'Owned by :user',
'meta_owned_name' => 'Притежавано от :user',
'entity_select' => 'Избор на обект',
'images' => 'Изображения',
'my_recent_drafts' => 'Моите скорошни драфтове',
'my_recently_viewed' => 'Моите скорошни преглеждания',
'my_most_viewed_favourites' => 'My Most Viewed Favourites',
'my_favourites' => 'My Favourites',
'my_favourites' => 'Моите фаворити',
'no_pages_viewed' => 'Не сте прегледали никакви страници',
'no_pages_recently_created' => 'Не са били създавани страници скоро',
'no_pages_recently_updated' => 'Не са били актуализирани страници скоро',
@ -42,7 +42,7 @@ return [
'permissions_intro' => 'Веднъж добавени, тези права ще вземат приоритет над всички други установени права.',
'permissions_enable' => 'Разреши уникални права',
'permissions_save' => 'Запази права',
'permissions_owner' => 'Owner',
'permissions_owner' => 'Собственик',
// Search
'search_results' => 'Резултати от търсенето',
@ -51,7 +51,7 @@ return [
'search_no_pages' => 'Няма страници отговарящи на търсенето',
'search_for_term' => 'Търси :term',
'search_more' => 'Още резултати',
'search_advanced' => 'Advanced Search',
'search_advanced' => 'Подробно търсене',
'search_terms' => 'Search Terms',
'search_content_type' => 'Тип на съдържание',
'search_exact_matches' => 'Точни съвпадения',
@ -62,7 +62,7 @@ return [
'search_permissions_set' => 'Задаване на права',
'search_created_by_me' => 'Създадено от мен',
'search_updated_by_me' => 'Обновено от мен',
'search_owned_by_me' => 'Owned by me',
'search_owned_by_me' => 'Притежаван от мен',
'search_date_options' => 'Настройки на дати',
'search_updated_before' => 'Обновено преди',
'search_updated_after' => 'Обновено след',
@ -262,7 +262,7 @@ return [
'attachments_upload' => 'Прикачен файл',
'attachments_link' => 'Прикачване на линк',
'attachments_set_link' => 'Поставяне на линк',
'attachments_delete' => 'Are you sure you want to delete this attachment?',
'attachments_delete' => 'Сигурни ли сте, че искате да изтриете прикачения файл?',
'attachments_dropzone' => 'Поставете файлове или цъкнете тук за да прикачите файл',
'attachments_no_files' => 'Няма прикачени фалове',
'attachments_explain_link' => 'Може да прикачите линк, ако не искате да качвате файл. Този линк може да бъде към друга страница или към файл в облакова пространство.',

View File

@ -35,13 +35,13 @@ return [
'app_primary_color' => 'Основен цвят на приложението',
'app_primary_color_desc' => 'Изберете основния цвят на приложението, включително на банера, бутоните и линковете.',
'app_homepage' => 'Application Homepage',
'app_homepage_desc' => 'Select a view to show on the homepage instead of the default view. Page permissions are ignored for selected pages.',
'app_homepage_select' => 'Select a page',
'app_footer_links' => 'Footer Links',
'app_footer_links_desc' => 'Add links to show within the site footer. These will be displayed at the bottom of most pages, including those that do not require login. You can use a label of "trans::<key>" to use system-defined translations. For example: Using "trans::common.privacy_policy" will provide the translated text "Privacy Policy" and "trans::common.terms_of_service" will provide the translated text "Terms of Service".',
'app_homepage_desc' => 'Изберете начална страница, която ще замени изгледа по подразбиране. Дефинираните права на страницата, която е избрана ще бъдат игнорирани.',
'app_homepage_select' => 'Избери страница',
'app_footer_links' => 'Футър линкове',
'app_footer_links_desc' => 'Добави линк в съдържанието на футъра. Добавените линкове ще се показват долу в повечето страници, включително и в страниците, в които логването не е задължително. Можете да използвате заместител "trans::<key>", за да използвате дума дефинирана от системата. Пример: Използването на "trans::common.privacy_policy" ще покаже "Лични данни" или на "trans::common.terms_of_service" ще покаже "Общи условия".',
'app_footer_links_label' => 'Link Label',
'app_footer_links_url' => 'Link URL',
'app_footer_links_add' => 'Add Footer Link',
'app_footer_links_url' => 'Линк URL',
'app_footer_links_add' => 'Добави футър линк',
'app_disable_comments' => 'Disable Comments',
'app_disable_comments_toggle' => 'Disable comments',
'app_disable_comments_desc' => 'Disables comments across all pages in the application. <br> Existing comments are not shown.',
@ -80,20 +80,20 @@ return [
'maint_image_cleanup_nothing_found' => 'No unused images found, Nothing deleted!',
'maint_send_test_email' => 'Send a Test Email',
'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.',
'maint_send_test_email_run' => 'Send test email',
'maint_send_test_email_success' => 'Email sent to :address',
'maint_send_test_email_mail_subject' => 'Test Email',
'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!',
'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.',
'maint_recycle_bin_desc' => 'Deleted shelves, books, chapters & pages are sent to the recycle bin so they can be restored or permanently deleted. Older items in the recycle bin may be automatically removed after a while depending on system configuration.',
'maint_recycle_bin_open' => 'Open Recycle Bin',
'maint_send_test_email_run' => 'Изпрати тестов имейл',
'maint_send_test_email_success' => 'Имейл изпратен на :address',
'maint_send_test_email_mail_subject' => 'Тестов Имейл',
'maint_send_test_email_mail_greeting' => 'Изпращането на Имейл работи!',
'maint_send_test_email_mail_text' => 'Поздравления! След като получихте този имейл, Вашите имейл настройки са конфигурирани правилно.',
'maint_recycle_bin_desc' => 'Изтрити рафти, книги, глави и страници се преместват в кошчето, откъдето можете да ги възстановите или изтриете завинаги. Стари съдържания в кошчето ще бъдат изтрити автоматично след време, в зависимост от настройките на системата.',
'maint_recycle_bin_open' => 'Отвори Кошчето',
// Recycle Bin
'recycle_bin' => 'Recycle Bin',
'recycle_bin' => 'Кошче',
'recycle_bin_desc' => 'Here you can restore items that have been deleted or choose to permanently remove them from the system. This list is unfiltered unlike similar activity lists in the system where permission filters are applied.',
'recycle_bin_deleted_item' => 'Deleted Item',
'recycle_bin_deleted_by' => 'Deleted By',
'recycle_bin_deleted_at' => 'Deletion Time',
'recycle_bin_deleted_item' => 'Изтрит предмет',
'recycle_bin_deleted_by' => 'Изтрит от',
'recycle_bin_deleted_at' => 'Час на изтриване',
'recycle_bin_permanently_delete' => 'Permanently Delete',
'recycle_bin_restore' => 'Restore',
'recycle_bin_contents_empty' => 'The recycle bin is currently empty',
@ -111,27 +111,27 @@ return [
'audit' => 'Audit Log',
'audit_desc' => 'This audit log displays a list of activities tracked in the system. This list is unfiltered unlike similar activity lists in the system where permission filters are applied.',
'audit_event_filter' => 'Event Filter',
'audit_event_filter_no_filter' => 'No Filter',
'audit_deleted_item' => 'Deleted Item',
'audit_deleted_item_name' => 'Name: :name',
'audit_table_user' => 'User',
'audit_table_event' => 'Event',
'audit_event_filter_no_filter' => 'Без филтър',
'audit_deleted_item' => 'Изтрит предмет',
'audit_deleted_item_name' => 'Име: :name',
'audit_table_user' => 'Потребител',
'audit_table_event' => 'Събитие',
'audit_table_related' => 'Related Item or Detail',
'audit_table_date' => 'Activity Date',
'audit_date_from' => 'Date Range From',
'audit_date_to' => 'Date Range To',
'audit_table_date' => 'Дата на активност',
'audit_date_from' => 'Време от',
'audit_date_to' => 'Време до',
// Role Settings
'roles' => 'Roles',
'role_user_roles' => 'User Roles',
'role_create' => 'Create New Role',
'role_create_success' => 'Role successfully created',
'role_delete' => 'Delete Role',
'role_delete_confirm' => 'This will delete the role with the name \':roleName\'.',
'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.',
'role_delete_no_migration' => "Don't migrate users",
'role_delete_sure' => 'Are you sure you want to delete this role?',
'role_delete_success' => 'Role successfully deleted',
'roles' => 'Роли',
'role_user_roles' => 'Потребителски роли',
'role_create' => 'Създай нова роля',
'role_create_success' => 'Ролята беше успешно създадена',
'role_delete' => 'Изтрий роля',
'role_delete_confirm' => 'Това ще изтрие ролята \':roleName\'.',
'role_delete_users_assigned' => 'В тази роля се намират :userCount потребители. Ако искате да преместите тези потребители в друга роля, моля изберете нова роля отдолу.',
'role_delete_no_migration' => "Не премествай потребителите в нова роля",
'role_delete_sure' => 'Сигурни ли сте, че искате да изтриете тази роля?',
'role_delete_success' => 'Ролята беше успешно изтрита',
'role_edit' => 'Редактиране на роля',
'role_details' => 'Детайли на роля',
'role_name' => 'Име на ролята',
@ -146,24 +146,24 @@ return [
'role_access_api' => 'Достъп до API на системата',
'role_manage_settings' => 'Управление на настройките на приложението',
'role_asset' => 'Настройки за достъп до активи',
'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.',
'role_asset_desc' => 'Тези настойки за достъп контролират достъпа по подразбиране до активите в системата. Настойките за достъп до книги, глави и страници ще отменят тези настройки.',
'roles_system_warning' => 'Важно: Добавянето на потребител в някое от горните три роли може да му позволи да промени собствените си права или правата на другите в системата. Възлагайте тези роли само на доверени потребители.',
'role_asset_desc' => 'Тези настройки за достъп контролират достъпа по подразбиране до активите в системата. Настройките за достъп до книги, глави и страници ще отменят тези настройки.',
'role_asset_admins' => 'Администраторите автоматично получават достъп до цялото съдържание, но тези опции могат да показват или скриват опциите за потребителския интерфейс.',
'role_all' => 'Всички',
'role_own' => 'Собствени',
'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
'role_save' => 'Save Role',
'role_update_success' => 'Role successfully updated',
'role_users' => 'Users in this role',
'role_users_none' => 'No users are currently assigned to this role',
'role_save' => 'Запази ролята',
'role_update_success' => 'Ролята беше успешно актуализирана',
'role_users' => 'Потребители в тази роля',
'role_users_none' => 'В момента няма потребители, назначени за тази роля',
// Users
'users' => 'Users',
'user_profile' => 'User Profile',
'users_add_new' => 'Add New User',
'users_search' => 'Search Users',
'users_latest_activity' => 'Latest Activity',
'users_details' => 'User Details',
'users' => 'Потребители',
'user_profile' => 'Потребителски профил',
'users_add_new' => 'Добави нов потребител',
'users_search' => 'Търси Потребители',
'users_latest_activity' => 'Последна активност',
'users_details' => 'Потребителски детайли',
'users_details_desc' => 'Set a display name and an email address for this user. The email address will be used for logging into the application.',
'users_details_desc_no_email' => 'Set a display name for this user so others can recognise them.',
'users_role' => 'User Roles',
@ -176,13 +176,13 @@ return [
'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.',
'users_password_warning' => 'Only fill the below if you would like to change your password.',
'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.',
'users_delete' => 'Delete User',
'users_delete_named' => 'Delete user :userName',
'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.',
'users_delete_confirm' => 'Are you sure you want to delete this user?',
'users_migrate_ownership' => 'Migrate Ownership',
'users_delete' => 'Изтрий потребител',
'users_delete_named' => 'Изтрий потребителя :userName',
'users_delete_warning' => 'Това изцяло ще изтрие този потребител с името \':userName\' от системата.',
'users_delete_confirm' => 'Сигурни ли сте, че искате да изтриете този потребител?',
'users_migrate_ownership' => 'Мигрирайте собствеността на сайта',
'users_migrate_ownership_desc' => 'Select a user here if you want another user to become the owner of all items currently owned by this user.',
'users_none_selected' => 'No user selected',
'users_none_selected' => 'Няма избрани потребители',
'users_delete_success' => 'User successfully removed',
'users_edit' => 'Edit User',
'users_edit_profile' => 'Edit Profile',
@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -8,67 +8,67 @@
return [
// Standard laravel validation lines
'accepted' => 'The :attribute must be accepted.',
'active_url' => 'The :attribute is not a valid URL.',
'after' => 'The :attribute must be a date after :date.',
'alpha' => 'The :attribute may only contain letters.',
'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.',
'alpha_num' => 'The :attribute may only contain letters and numbers.',
'array' => 'The :attribute must be an array.',
'before' => 'The :attribute must be a date before :date.',
'accepted' => ':attribute трябва да бъде одобрен.',
'active_url' => ':attribute не е валиден URL адрес.',
'after' => ':attribute трябва да е дата след :date.',
'alpha' => ':attribute може да съдържа само букви.',
'alpha_dash' => ':attribute може да съдържа само букви, числа, тире и долна черта.',
'alpha_num' => ':attribute може да съдържа само букви и числа.',
'array' => ':attribute трябва да е масив (array).',
'before' => ':attribute трябва да е дата след :date.',
'between' => [
'numeric' => 'The :attribute must be between :min and :max.',
'file' => 'The :attribute must be between :min and :max kilobytes.',
'string' => 'The :attribute must be between :min and :max characters.',
'numeric' => ':attribute трябва да е между :min и :max.',
'file' => ':attribute трябва да е между :min и :max килобайта.',
'string' => 'Дължината на :attribute трябва да бъде между :min и :max символа.',
'array' => 'The :attribute must have between :min and :max items.',
],
'boolean' => 'The :attribute field must be true or false.',
'confirmed' => 'The :attribute confirmation does not match.',
'date' => 'The :attribute is not a valid date.',
'date_format' => 'The :attribute does not match the format :format.',
'different' => 'The :attribute and :other must be different.',
'digits' => 'The :attribute must be :digits digits.',
'digits_between' => 'The :attribute must be between :min and :max digits.',
'email' => 'The :attribute must be a valid email address.',
'ends_with' => 'The :attribute must end with one of the following: :values',
'filled' => 'The :attribute field is required.',
'boolean' => 'Полето :attribute трябва да съдържа булева стойност (true или false).',
'confirmed' => 'Потвърждението на :attribute не съвпада.',
'date' => ':attribute не е валидна дата.',
'date_format' => ':attribute не е в посоченият формат - :format.',
'different' => ':attribute и :other трябва да са различни.',
'digits' => ':attribute трябва да съдържа :digits цифри.',
'digits_between' => ':attribute трябва да бъде с дължина между :min и :max цифри.',
'email' => ':attribute трябва да бъде валиден имейл адрес.',
'ends_with' => ':attribute трябва да свършва с един от следните символи: :values',
'filled' => 'Полето :attribute е задължителен.',
'gt' => [
'numeric' => 'The :attribute must be greater than :value.',
'file' => 'The :attribute must be greater than :value kilobytes.',
'string' => 'The :attribute must be greater than :value characters.',
'numeric' => ':attribute трябва да бъде по-голям от :value.',
'file' => 'Големината на :attribute трябва да бъде по-голямо от :value килобайта.',
'string' => 'Дължината на :attribute трябва да бъде по-голямо от :value символа.',
'array' => 'The :attribute must have more than :value items.',
],
'gte' => [
'numeric' => 'The :attribute must be greater than or equal :value.',
'file' => 'The :attribute must be greater than or equal :value kilobytes.',
'string' => 'The :attribute must be greater than or equal :value characters.',
'file' => 'Големината на :attribute трябва да бъде по-голямо или равно на :value килобайта.',
'string' => 'Дължината на :attribute трябва да бъде по-голямо или равно на :value символа.',
'array' => 'The :attribute must have :value items or more.',
],
'exists' => 'The selected :attribute is invalid.',
'image' => 'The :attribute must be an image.',
'image_extension' => 'The :attribute must have a valid & supported image extension.',
'in' => 'The selected :attribute is invalid.',
'integer' => 'The :attribute must be an integer.',
'ip' => 'The :attribute must be a valid IP address.',
'ipv4' => 'The :attribute must be a valid IPv4 address.',
'ipv6' => 'The :attribute must be a valid IPv6 address.',
'json' => 'The :attribute must be a valid JSON string.',
'exists' => 'Избраният :attribute е невалиден.',
'image' => ':attribute трябва да e изображение.',
'image_extension' => ':attribute трябва да е валиден и/или допустим графичен файлов формат.',
'in' => 'Избраният :attribute е невалиден.',
'integer' => ':attribute трябва да бъде цяло число.',
'ip' => ':attribute трябва да бъде валиден IP адрес.',
'ipv4' => ':attribute трябва да бъде валиден IPv4 адрес.',
'ipv6' => ':attribute трябва да бъде валиден IPv6 адрес.',
'json' => ':attribute трябва да съдържа валиден JSON.',
'lt' => [
'numeric' => 'The :attribute must be less than :value.',
'file' => 'The :attribute must be less than :value kilobytes.',
'string' => 'The :attribute must be less than :value characters.',
'numeric' => ':attribute трябва да бъде по-малко от :value.',
'file' => 'Големината на :attribute трябва да бъде по-малко от :value килобайта.',
'string' => 'Дължината на :attribute трябва да бъде по-малко от :value символа.',
'array' => 'The :attribute must have less than :value items.',
],
'lte' => [
'numeric' => 'The :attribute must be less than or equal :value.',
'file' => 'The :attribute must be less than or equal :value kilobytes.',
'string' => 'The :attribute must be less than or equal :value characters.',
'numeric' => ':attribute трябва да бъде по-малко или равно на :value.',
'file' => 'Големината на :attribute трябва да бъде по-малко или равно на :value килобайта.',
'string' => 'Дължината на :attribute трябва да бъде по-малко или равно на :value символа.',
'array' => 'The :attribute must not have more than :value items.',
],
'max' => [
'numeric' => 'The :attribute may not be greater than :max.',
'file' => 'The :attribute may not be greater than :max kilobytes.',
'string' => 'The :attribute may not be greater than :max characters.',
'numeric' => ':attribute не трябва да бъде по-голям от :max.',
'file' => 'Големината на :attribute не може да бъде по-голямо от :value килобайта.',
'string' => 'Дължината на :attribute не може да бъде по-голямо от :value символа.',
'array' => 'The :attribute may not have more than :max items.',
],
'mimes' => 'The :attribute must be a file of type: :values.',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'Hebraisk',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -42,8 +42,8 @@ return [
'fullscreen' => 'Vollbild',
'favourite' => 'Favorit',
'unfavourite' => 'Kein Favorit',
'next' => 'Next',
'previous' => 'Previous',
'next' => 'Nächste',
'previous' => 'Vorheriges',
// Sort Options
'sort_options' => 'Sortieroptionen',

View File

@ -244,6 +244,7 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'Hebräisch',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -44,8 +44,8 @@ return [
'bookshelf_delete_notification' => 'Das Bücherregal wurde erfolgreich gelöscht',
// Favourites
'favourite_add_notification' => '":name" has been added to your favourites',
'favourite_remove_notification' => '":name" has been removed from your favourites',
'favourite_add_notification' => '":name" wurde zu deinen Favoriten hinzugefügt',
'favourite_remove_notification' => '":name" wurde aus Ihren Favoriten entfernt',
// Other
'commented_on' => 'kommentiert',

View File

@ -27,8 +27,8 @@ return [
'images' => 'Bilder',
'my_recent_drafts' => 'Meine kürzlichen Entwürfe',
'my_recently_viewed' => 'Kürzlich von mir angesehen',
'my_most_viewed_favourites' => 'My Most Viewed Favourites',
'my_favourites' => 'My Favourites',
'my_most_viewed_favourites' => 'Meine meistgesehenen Favoriten',
'my_favourites' => 'Meine Favoriten',
'no_pages_viewed' => 'Du hast bisher keine Seiten angesehen.',
'no_pages_recently_created' => 'Du hast bisher keine Seiten angelegt.',
'no_pages_recently_updated' => 'Du hast bisher keine Seiten aktualisiert.',

View File

@ -83,9 +83,9 @@ return [
'404_page_not_found' => 'Seite nicht gefunden',
'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Du angefordert hast, wurde nicht gefunden.',
'sorry_page_not_found_permission_warning' => 'Wenn du erwartet hast, dass diese Seite existiert, hast du möglicherweise nicht die Berechtigung, sie anzuzeigen.',
'image_not_found' => 'Image Not Found',
'image_not_found_subtitle' => 'Sorry, The image file you were looking for could not be found.',
'image_not_found_details' => 'If you expected this image to exist it might have been deleted.',
'image_not_found' => 'Bild nicht gefunden',
'image_not_found_subtitle' => 'Entschuldigung. Das Bild, die Sie angefordert haben, wurde nicht gefunden.',
'image_not_found_details' => 'Wenn Sie erwartet haben, dass dieses Bild existiert, könnte es gelöscht worden sein.',
'return_home' => 'Zurück zur Startseite',
'error_occurred' => 'Es ist ein Fehler aufgetreten',
'app_down' => ':appName befindet sich aktuell im Wartungsmodus.',

View File

@ -244,6 +244,7 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -44,8 +44,8 @@ return [
'bookshelf_delete_notification' => 'Estante borrado exitosamente',
// Favourites
'favourite_add_notification' => '":name" has been added to your favourites',
'favourite_remove_notification' => '":name" has been removed from your favourites',
'favourite_add_notification' => '".name" se añadió a sus favoritos',
'favourite_remove_notification' => '".name" se eliminó de sus favoritos',
// Other
'commented_on' => 'comentado',

View File

@ -40,10 +40,10 @@ return [
'remove' => 'Remover',
'add' => 'Agregar',
'fullscreen' => 'Pantalla completa',
'favourite' => 'Añadir a favoritos',
'favourite' => 'Favoritos',
'unfavourite' => 'Eliminar de favoritos',
'next' => 'Next',
'previous' => 'Previous',
'next' => 'Siguiente',
'previous' => 'Anterior',
// Sort Options
'sort_options' => 'Opciones de Orden',
@ -58,7 +58,7 @@ return [
// Misc
'deleted_user' => 'Usuario borrado',
'no_activity' => 'Ninguna actividad para mostrar',
'no_items' => 'No hay items disponibles',
'no_items' => 'No hay elementos disponibles',
'back_to_top' => 'Volver arriba',
'toggle_details' => 'Alternar detalles',
'toggle_thumbnails' => 'Alternar miniaturas',

View File

@ -27,8 +27,8 @@ return [
'images' => 'Imágenes',
'my_recent_drafts' => 'Mis borradores recientes',
'my_recently_viewed' => 'Mis visualizaciones recientes',
'my_most_viewed_favourites' => 'My Most Viewed Favourites',
'my_favourites' => 'My Favourites',
'my_most_viewed_favourites' => 'Mis Favoritos Más Vistos',
'my_favourites' => 'Mis Favoritos',
'no_pages_viewed' => 'Ud. no ha visto ninguna página',
'no_pages_recently_created' => 'Ninguna página ha sido creada recientemente',
'no_pages_recently_updated' => 'Ninguna página ha sido actualizada recientemente',

View File

@ -242,6 +242,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -42,8 +42,8 @@ return [
'fullscreen' => 'Plein écran',
'favourite' => 'Favoris',
'unfavourite' => 'Supprimer des favoris',
'next' => 'Next',
'previous' => 'Previous',
'next' => 'Suivant',
'previous' => 'Précédent',
// Sort Options
'sort_options' => 'Options de tri',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'Hébreu',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -0,0 +1,53 @@
<?php
/**
* Activity text strings.
* Is used for all the text within activity logs & notifications.
*/
return [
// Pages
'page_create' => 'stvorena stranica',
'page_create_notification' => 'Stranica je uspješno stvorena',
'page_update' => 'ažurirana stranica',
'page_update_notification' => 'Stranica je uspješno ažurirana',
'page_delete' => 'izbrisana stranica',
'page_delete_notification' => 'Stranica je uspješno izbrisana',
'page_restore' => 'obnovljena stranica',
'page_restore_notification' => 'Stranica je uspješno obnovljena',
'page_move' => 'premještena stranica',
// Chapters
'chapter_create' => 'stvoreno poglavlje',
'chapter_create_notification' => 'Poglavlje je uspješno stvoreno',
'chapter_update' => 'ažurirano poglavlje',
'chapter_update_notification' => 'Poglavlje je uspješno ažurirano',
'chapter_delete' => 'izbrisano poglavlje',
'chapter_delete_notification' => 'Poglavlje je uspješno izbrisano',
'chapter_move' => 'premiješteno poglavlje',
// Books
'book_create' => 'stvorena knjiga',
'book_create_notification' => 'Knjiga je uspješno stvorena',
'book_update' => 'ažurirana knjiga',
'book_update_notification' => 'Knjiga je uspješno ažurirana',
'book_delete' => 'izbrisana knjiga',
'book_delete_notification' => 'Knjiga je uspješno izbrisana',
'book_sort' => 'razvrstana knjiga',
'book_sort_notification' => 'Knjiga je uspješno razvrstana',
// Bookshelves
'bookshelf_create' => 'stvorena polica za knjige',
'bookshelf_create_notification' => 'Polica za knjige je uspješno stvorena',
'bookshelf_update' => 'ažurirana polica za knjige',
'bookshelf_update_notification' => 'Polica za knjige je uspješno ažurirana',
'bookshelf_delete' => 'izbrisana polica za knjige',
'bookshelf_delete_notification' => 'Polica za knjige je uspješno izbrisana',
// Favourites
'favourite_add_notification' => '":name" has been added to your favourites',
'favourite_remove_notification' => '":name" has been removed from your favourites',
// Other
'commented_on' => 'komentirano',
'permissions_update' => 'ažurirana dopuštenja',
];

View File

@ -0,0 +1,77 @@
<?php
/**
* Authentication Language Lines
* The following language lines are used during authentication for various
* messages that we need to display to the user.
*/
return [
'failed' => 'Ove vjerodajnice ne podudaraju se s našim zapisima.',
'throttle' => 'Previše pokušaja prijave. Molimo vas da pokušate za :seconds sekundi.',
// Login & Register
'sign_up' => 'Registrirajte se',
'log_in' => 'Prijavite se',
'log_in_with' => 'Prijavite se sa :socialDriver',
'sign_up_with' => 'Registrirajte se sa :socialDriver',
'logout' => 'Odjavite se',
'name' => 'Ime',
'username' => 'Korisničko ime',
'email' => 'Email',
'password' => 'Lozinka',
'password_confirm' => 'Potvrdite lozinku',
'password_hint' => 'Mora imati više od 7 znakova',
'forgot_password' => 'Zaboravili ste lozinku?',
'remember_me' => 'Zapamti me',
'ldap_email_hint' => 'Molimo upišite mail korišten za ovaj račun.',
'create_account' => 'Stvori račun',
'already_have_account' => 'Imate li već račun?',
'dont_have_account' => 'Nemate račun?',
'social_login' => 'Social Login',
'social_registration' => 'Social Registration',
'social_registration_text' => 'Prijavite se putem drugih servisa.',
'register_thanks' => 'Zahvaljujemo na registraciji!',
'register_confirm' => 'Molimo, provjerite svoj email i kliknite gumb za potvrdu pristupa :appName.',
'registrations_disabled' => 'Registracije su trenutno onemogućene',
'registration_email_domain_invalid' => 'Ova e-mail adresa se ne može koristiti u ovoj aplikaciji',
'register_success' => 'Hvala na prijavi! Sada ste registrirani i prijavljeni.',
// Password Reset
'reset_password' => 'Promijenite lozinku',
'reset_password_send_instructions' => 'Upišite svoju e-mail adresu kako biste primili poveznicu za promjenu lozinke.',
'reset_password_send_button' => 'Pošalji poveznicu za promjenu lozinke',
'reset_password_sent' => 'Poveznica za promjenu lozinke poslat će se na :email adresu ako je u našem sustavu.',
'reset_password_success' => 'Vaša lozinka je uspješno promijenjena.',
'email_reset_subject' => 'Promijenite svoju :appName lozinku',
'email_reset_text' => 'Primili ste ovu poruku jer je zatražena promjena lozinke za vaš račun.',
'email_reset_not_requested' => 'Ako niste tražili promjenu lozinke slobodno zanemarite ovu poruku.',
// Email Confirmation
'email_confirm_subject' => 'Potvrdite svoju e-mail adresu na :appName',
'email_confirm_greeting' => 'Hvala na prijavi :appName!',
'email_confirm_text' => 'Molimo potvrdite svoju e-mail adresu klikom na donji gumb.',
'email_confirm_action' => 'Potvrdi Email',
'email_confirm_send_error' => 'Potvrda e-mail adrese je obavezna, ali sustav ne može poslati e-mail. Javite se administratoru kako bi provjerio vaš e-mail.',
'email_confirm_success' => 'Vaš e-mail adresa je potvrđena!',
'email_confirm_resent' => 'Ponovno je poslana potvrda. Molimo, provjerite svoj inbox.',
'email_not_confirmed' => 'E-mail adresa nije potvrđena.',
'email_not_confirmed_text' => 'Vaša e-mail adresa još nije potvrđena.',
'email_not_confirmed_click_link' => 'Molimo, kliknite na poveznicu koju ste primili kratko nakon registracije.',
'email_not_confirmed_resend' => 'Ako ne možete pronaći e-mail za postavljanje lozinke možete ga zatražiti ponovno ispunjavanjem ovog obrasca.',
'email_not_confirmed_resend_button' => 'Ponovno pošalji e-mail potvrde',
// User Invite
'user_invite_email_subject' => 'Pozvani ste pridružiti se :appName!',
'user_invite_email_greeting' => 'Vaš račun je kreiran za vas na :appName',
'user_invite_email_text' => 'Kliknite ispod da biste postavili račun i dobili pristup.',
'user_invite_email_action' => 'Postavite lozinku',
'user_invite_page_welcome' => 'Dobrodošli u :appName!',
'user_invite_page_text' => 'Da biste postavili račun i dobili pristup trebate unijeti lozinku kojom ćete se ubuduće prijaviti na :appName.',
'user_invite_page_confirm_button' => 'Potvrdite lozinku',
'user_invite_success' => 'Lozinka je postavljena, možete pristupiti :appName!'
];

View File

@ -0,0 +1,93 @@
<?php
/**
* Common elements found throughout many areas of BookStack.
*/
return [
// Buttons
'cancel' => 'Odustani',
'confirm' => 'Potvrdi',
'back' => 'Natrag',
'save' => 'Spremi',
'continue' => 'Nastavi',
'select' => 'Odaberi',
'toggle_all' => 'Prebaci sve',
'more' => 'Više',
// Form Labels
'name' => 'Ime',
'description' => 'Opis',
'role' => 'Uloga',
'cover_image' => 'Naslovna slika',
'cover_image_description' => 'Slika treba biti približno 440x250px.',
// Actions
'actions' => 'Aktivnost',
'view' => 'Pogled',
'view_all' => 'Pogledaj sve',
'create' => 'Stvori',
'update' => 'Ažuriraj',
'edit' => 'Uredi',
'sort' => 'Razvrstaj',
'move' => 'Makni',
'copy' => 'Kopiraj',
'reply' => 'Ponovi',
'delete' => 'Izbriši',
'delete_confirm' => 'Potvrdite brisanje',
'search' => 'Traži',
'search_clear' => 'Očisti pretragu',
'reset' => 'Ponovno postavi',
'remove' => 'Ukloni',
'add' => 'Dodaj',
'fullscreen' => 'Cijeli zaslon',
'favourite' => 'Favourite',
'unfavourite' => 'Unfavourite',
'next' => 'Next',
'previous' => 'Previous',
// Sort Options
'sort_options' => 'Razvrstaj opcije',
'sort_direction_toggle' => 'Razvrstaj smjer prebacivanja',
'sort_ascending' => 'Razvrstaj uzlazno',
'sort_descending' => 'Razvrstaj silazno',
'sort_name' => 'Ime',
'sort_default' => 'Zadano',
'sort_created_at' => 'Datum',
'sort_updated_at' => 'Ažuriraj datum',
// Misc
'deleted_user' => 'Izbrisani korisnik',
'no_activity' => 'Nema aktivnosti za pregled',
'no_items' => 'Nedostupno',
'back_to_top' => 'Natrag na vrh',
'toggle_details' => 'Prebaci detalje',
'toggle_thumbnails' => 'Uključi minijature',
'details' => 'Detalji',
'grid_view' => 'Prikaz rešetke',
'list_view' => 'Prikaz popisa',
'default' => 'Zadano',
'breadcrumb' => 'Breadcrumb',
// Header
'header_menu_expand' => 'Proširi izbornik',
'profile_menu' => 'Profil',
'view_profile' => 'Vidi profil',
'edit_profile' => 'Uredite profil',
'dark_mode' => 'Tamni način',
'light_mode' => 'Svijetli način',
// Layout tabs
'tab_info' => 'Info',
'tab_info_label' => 'Tab: pokaži sekundarne informacije',
'tab_content' => 'Sadržaj',
'tab_content_label' => 'Tab: pokaži primarni sadržaj',
// Email Content
'email_action_help' => 'Ako imate poteškoća s klikom na gumb ":actionText", kopirajte i zalijepite donji URL u vaš preglednik.',
'email_rights' => 'Sva prava pridržana',
// Footer Link Options
// Not directly used but available for convenience to users.
'privacy_policy' => 'Politika privatnosti',
'terms_of_service' => 'Uvjeti korištenja',
];

View File

@ -0,0 +1,34 @@
<?php
/**
* Text used in custom JavaScript driven components.
*/
return [
// Image Manager
'image_select' => 'Odabir slike',
'image_all' => 'Sve',
'image_all_title' => 'Vidi sve slike',
'image_book_title' => 'Vidi slike dodane ovoj knjizi',
'image_page_title' => 'Vidi slike dodane ovoj stranici',
'image_search_hint' => 'Pretraži pomoću imena slike',
'image_uploaded' => 'Učitano :uploadedDate',
'image_load_more' => 'Učitaj više',
'image_image_name' => 'Ime slike',
'image_delete_used' => 'Ova slika korištena je na donjoj stranici.',
'image_delete_confirm_text' => 'Jeste li sigurni da želite obrisati sliku?',
'image_select_image' => 'Odaberi sliku',
'image_dropzone' => 'Prebacite sliku ili kliknite ovdje za prijenos',
'images_deleted' => 'Obrisane slike',
'image_preview' => 'Pregled slike',
'image_upload_success' => 'Slika je uspješno dodana',
'image_update_success' => 'Detalji slike su uspješno ažurirani',
'image_delete_success' => 'Slika je obrisana',
'image_upload_remove' => 'Ukloni',
// Code Editor
'code_editor' => 'Uredi kod',
'code_language' => 'Jezik koda',
'code_content' => 'Sadržaj koda',
'code_session_history' => 'Povijest sesije',
'code_save' => 'Spremi kod',
];

View File

@ -0,0 +1,322 @@
<?php
/**
* Text used for 'Entities' (Document Structure Elements) such as
* Books, Shelves, Chapters & Pages
*/
return [
// Shared
'recently_created' => 'Nedavno stvoreno',
'recently_created_pages' => 'Nedavno stvorene stranice',
'recently_updated_pages' => 'Nedavno ažurirane stranice',
'recently_created_chapters' => 'Nedavno stvorena poglavlja',
'recently_created_books' => 'Nedavno stvorene knjige',
'recently_created_shelves' => 'Nedavno stvorene police',
'recently_update' => 'Nedavno ažurirano',
'recently_viewed' => 'Nedavno viđeno',
'recent_activity' => 'Nedavna aktivnost',
'create_now' => 'Stvori sada',
'revisions' => 'Revizije',
'meta_revision' => 'Revizija #:revisionCount',
'meta_created' => 'Stvoreno :timeLength',
'meta_created_name' => 'Stvoreno :timeLength od :user',
'meta_updated' => 'Ažurirano :timeLength',
'meta_updated_name' => 'Ažurirano :timeLength od :user',
'meta_owned_name' => 'Vlasništvo :user',
'entity_select' => 'Odaberi subjekt',
'images' => 'Slike',
'my_recent_drafts' => 'Nedavne skice',
'my_recently_viewed' => 'Nedavno viđeno',
'my_most_viewed_favourites' => 'My Most Viewed Favourites',
'my_favourites' => 'My Favourites',
'no_pages_viewed' => 'Niste pogledali nijednu stranicu',
'no_pages_recently_created' => 'Nema nedavno stvorenih stranica',
'no_pages_recently_updated' => 'Nema nedavno ažuriranih stranica',
'export' => 'Izvoz',
'export_html' => 'Web File',
'export_pdf' => 'PDF File',
'export_text' => 'Text File',
// Permissions and restrictions
'permissions' => 'Dopuštenja',
'permissions_intro' => 'Jednom postavljene, ove dozvole bit će prioritetne ostalim dopuštenjima.',
'permissions_enable' => 'Omogući dopuštenje za korištenje',
'permissions_save' => 'Spremi dopuštenje',
'permissions_owner' => 'Vlasnik',
// Search
'search_results' => 'Pretraži rezultate',
'search_total_results_found' => ':count rezultat|:count ukupno pronađenih rezultata',
'search_clear' => 'Očisti pretragu',
'search_no_pages' => 'Nijedna stranica ne podudara se s ovim pretraživanjem',
'search_for_term' => 'Traži :term',
'search_more' => 'Više rezultata',
'search_advanced' => 'Napredno pretraživanje',
'search_terms' => 'Pretraži pojmove',
'search_content_type' => 'Vrsta sadržaja',
'search_exact_matches' => 'Podudarnosti',
'search_tags' => 'Označi pretragu',
'search_options' => 'Opcije',
'search_viewed_by_me' => 'Pregledano od mene',
'search_not_viewed_by_me' => 'Nije pregledano od mene',
'search_permissions_set' => 'Set dopuštenja',
'search_created_by_me' => 'Stvoreno od mene',
'search_updated_by_me' => 'Ažurirano od mene',
'search_owned_by_me' => 'Moje vlasništvo',
'search_date_options' => 'Opcije datuma',
'search_updated_before' => 'Ažurirano prije',
'search_updated_after' => 'Ažurirano nakon',
'search_created_before' => 'Stvoreno prije',
'search_created_after' => 'Stvoreno nakon',
'search_set_date' => 'Datumi',
'search_update' => 'Ažuriraj pretragu',
// Shelves
'shelf' => 'Polica',
'shelves' => 'Police',
'x_shelves' => ':count polica|:count polica',
'shelves_long' => 'Police za knjige',
'shelves_empty' => 'Nijedna polica nije stvorena',
'shelves_create' => 'Stvori novu policu',
'shelves_popular' => 'Popularne police',
'shelves_new' => 'Nove police',
'shelves_new_action' => 'Nova polica',
'shelves_popular_empty' => 'Najpopularnije police pojavit će se. ovdje.',
'shelves_new_empty' => 'Nedavno stvorene police pojavit će se ovdje.',
'shelves_save' => 'Spremi policu',
'shelves_books' => 'Knjige na ovoj polici',
'shelves_add_books' => 'Dodaj knjige na ovu policu',
'shelves_drag_books' => 'Prebaci knjige na ovu policu',
'shelves_empty_contents' => 'Ova polica još nema dodijeljene knjige',
'shelves_edit_and_assign' => 'Uredi policu za dodavanje knjiga',
'shelves_edit_named' => 'Uredi policu :name',
'shelves_edit' => 'Uredi policu',
'shelves_delete' => 'Izbriši policu',
'shelves_delete_named' => 'Izbriši policu :name',
'shelves_delete_explain' => "This will delete the bookshelf with the name ':name'. Contained books will not be deleted.",
'shelves_delete_confirmation' => 'Jeste li sigurni da želite obrisati policu?',
'shelves_permissions' => 'Dopuštenja za policu',
'shelves_permissions_updated' => 'Ažurirana dopuštenja za policu',
'shelves_permissions_active' => 'Aktivirana dopuštenja za policu',
'shelves_copy_permissions_to_books' => 'Kopiraj dopuštenja za knjige',
'shelves_copy_permissions' => 'Kopiraj dopuštenja',
'shelves_copy_permissions_explain' => 'Ovo će promijeniti trenutna dopuštenja za policu i knjige u njoj. Prije aktivacije provjerite jesu li sve dopuštenja za ovu policu spremljena.',
'shelves_copy_permission_success' => 'Dopuštenja za policu kopirana za :count knjiga',
// Books
'book' => 'Knjiga',
'books' => 'Knjige',
'x_books' => ':count knjiga|:count knjiga',
'books_empty' => 'Nijedna knjiga nije stvorena',
'books_popular' => 'Popularne knjige',
'books_recent' => 'Nedavne knjige',
'books_new' => 'Nove knjige',
'books_new_action' => 'Nova knjiga',
'books_popular_empty' => 'Najpopularnije knjige pojavit će se ovdje.',
'books_new_empty' => 'Najnovije knjige pojavit će se ovdje.',
'books_create' => 'Stvori novu knjigu',
'books_delete' => 'Izbriši knjigu',
'books_delete_named' => 'Izbriši knjigu :bookName',
'books_delete_explain' => 'Ovaj korak će izbrisati knjigu \':bookName\'. Izbrisati će sve stranice i poglavlja.',
'books_delete_confirmation' => 'Jeste li sigurni da želite izbrisati ovu knjigu?',
'books_edit' => 'Uredi knjigu',
'books_edit_named' => 'Uredi knjigu :bookName',
'books_form_book_name' => 'Ime knjige',
'books_save' => 'Spremi knjigu',
'books_permissions' => 'Dopuštenja za knjigu',
'books_permissions_updated' => 'Ažurirana dopuštenja za knjigu',
'books_empty_contents' => 'U ovoj knjizi još nema stranica ni poglavlja.',
'books_empty_create_page' => 'Stvori novu stranicu',
'books_empty_sort_current_book' => 'Razvrstaj postojeće knjige',
'books_empty_add_chapter' => 'Dodaj poglavlje',
'books_permissions_active' => 'Aktivna dopuštenja za knjigu',
'books_search_this' => 'Traži knjigu',
'books_navigation' => 'Navigacija knjige',
'books_sort' => 'Razvrstaj sadržaj knjige',
'books_sort_named' => 'Razvrstaj knjigu :bookName',
'books_sort_name' => 'Razvrstaj po imenu',
'books_sort_created' => 'Razvrstaj po datumu nastanka',
'books_sort_updated' => 'Razvrstaj po datumu ažuriranja',
'books_sort_chapters_first' => 'Prva poglavlja',
'books_sort_chapters_last' => 'Zadnja poglavlja',
'books_sort_show_other' => 'Pokaži ostale knjige',
'books_sort_save' => 'Spremi novi poredak',
// Chapters
'chapter' => 'Poglavlje',
'chapters' => 'Poglavlja',
'x_chapters' => ':count poglavlje|:count poglavlja',
'chapters_popular' => 'Popularna poglavlja',
'chapters_new' => 'Novo poglavlje',
'chapters_create' => 'Stvori novo poglavlje',
'chapters_delete' => 'Izbriši poglavlje',
'chapters_delete_named' => 'Izbriši poglavlje :chapterName',
'chapters_delete_explain' => 'Ovaj korak briše poglavlje \':chapterName\'. Sve stranice u njemu će biti izbrisane.',
'chapters_delete_confirm' => 'Jeste li sigurni da želite izbrisati poglavlje?',
'chapters_edit' => 'Uredi poglavlje',
'chapters_edit_named' => 'Uredi poglavlje :chapterName',
'chapters_save' => 'Spremi poglavlje',
'chapters_move' => 'Premjesti poglavlje',
'chapters_move_named' => 'Premjesti poglavlje :chapterName',
'chapter_move_success' => 'Poglavlje premješteno u :bookName',
'chapters_permissions' => 'Dopuštenja za poglavlje',
'chapters_empty' => 'U ovom poglavlju nema stranica.',
'chapters_permissions_active' => 'Aktivna dopuštenja za poglavlje',
'chapters_permissions_success' => 'Ažurirana dopuštenja za poglavlje',
'chapters_search_this' => 'Pretraži poglavlje',
// Pages
'page' => 'Stranica',
'pages' => 'Stranice',
'x_pages' => ':count stranice|:count stranica',
'pages_popular' => 'Popularne stranice',
'pages_new' => 'Nova stranica',
'pages_attachments' => 'Prilozi',
'pages_navigation' => 'Navigacija stranice',
'pages_delete' => 'Izbriši stranicu',
'pages_delete_named' => 'Izbriši stranicu :pageName',
'pages_delete_draft_named' => 'Izbriši nacrt stranice :pageName',
'pages_delete_draft' => 'Izbriši nacrt stranice',
'pages_delete_success' => 'Izbrisana stranica',
'pages_delete_draft_success' => 'Izbrisan nacrt stranice',
'pages_delete_confirm' => 'Jeste li sigurni da želite izbrisati stranicu?',
'pages_delete_draft_confirm' => 'Jeste li sigurni da želite izbrisati nacrt stranice?',
'pages_editing_named' => 'Uređivanje stranice :pageName',
'pages_edit_draft_options' => 'Izrada skice',
'pages_edit_save_draft' => 'Spremi nacrt',
'pages_edit_draft' => 'Uredi nacrt stranice',
'pages_editing_draft' => 'Uređivanja nacrta',
'pages_editing_page' => 'Uređivanje stranice',
'pages_edit_draft_save_at' => 'Nacrt spremljen kao',
'pages_edit_delete_draft' => 'Izbriši nacrt',
'pages_edit_discard_draft' => 'Odbaci nacrt',
'pages_edit_set_changelog' => 'Postavi dnevnik promjena',
'pages_edit_enter_changelog_desc' => 'Ukratko opišite promjene koje ste napravili',
'pages_edit_enter_changelog' => 'Unesi dnevnik promjena',
'pages_save' => 'Spremi stranicu',
'pages_title' => 'Naslov stranice',
'pages_name' => 'Ime stranice',
'pages_md_editor' => 'Uređivač',
'pages_md_preview' => 'Pregled',
'pages_md_insert_image' => 'Umetni sliku',
'pages_md_insert_link' => 'Umetni poveznicu',
'pages_md_insert_drawing' => 'Umetni crtež',
'pages_not_in_chapter' => 'Stranica nije u poglavlju',
'pages_move' => 'Premjesti stranicu',
'pages_move_success' => 'Stranica premještena u ":parentName"',
'pages_copy' => 'Kopiraj stranicu',
'pages_copy_desination' => 'Kopiraj odredište',
'pages_copy_success' => 'Stranica je uspješno kopirana',
'pages_permissions' => 'Dopuštenja stranice',
'pages_permissions_success' => 'Ažurirana dopuštenja stranice',
'pages_revision' => 'Revizija',
'pages_revisions' => 'Revizija stranice',
'pages_revisions_named' => 'Revizije stranice :pageName',
'pages_revision_named' => 'Revizija stranice :pageName',
'pages_revision_restored_from' => 'Oporavak iz #:id; :summary',
'pages_revisions_created_by' => 'Stvoreno od',
'pages_revisions_date' => 'Datum revizije',
'pages_revisions_number' => '#',
'pages_revisions_numbered' => 'Revizija #:id',
'pages_revisions_numbered_changes' => 'Revizija #:id Promjene',
'pages_revisions_changelog' => 'Dnevnik promjena',
'pages_revisions_changes' => 'Promjene',
'pages_revisions_current' => 'Trenutna verzija',
'pages_revisions_preview' => 'Pregled',
'pages_revisions_restore' => 'Vrati',
'pages_revisions_none' => 'Ova stranica nema revizija',
'pages_copy_link' => 'Kopiraj poveznicu',
'pages_edit_content_link' => 'Uredi sadržaj',
'pages_permissions_active' => 'Aktivna dopuštenja stranice',
'pages_initial_revision' => 'Početno objavljivanje',
'pages_initial_name' => 'Nova stranica',
'pages_editing_draft_notification' => 'Uređujete nacrt stranice posljednji put spremljen :timeDiff.',
'pages_draft_edited_notification' => 'Ova je stranica u međuvremenu ažurirana. Preporučujemo da odbacite ovaj nacrt.',
'pages_draft_edit_active' => [
'start_a' => ':count korisnika koji uređuju ovu stranicu',
'start_b' => ':userName je počeo uređivati ovu stranicu',
'time_a' => 'otkad je stranica posljednji put ažurirana',
'time_b' => 'u zadnjih :minCount minuta',
'message' => ':start :time. Pripazite na uzajamna ažuriranja!',
],
'pages_draft_discarded' => 'Nacrt je odbijen jer je uređivač ažurirao postoječi sadržaj',
'pages_specific' => 'Predlošci stranice',
'pages_is_template' => 'Predložak stranice',
// Editor Sidebar
'page_tags' => 'Oznake stranice',
'chapter_tags' => 'Oznake poglavlja',
'book_tags' => 'Oznake knjiga',
'shelf_tags' => 'Oznake polica',
'tag' => 'Oznaka',
'tags' => 'Tags',
'tag_name' => 'Tag Name',
'tag_value' => 'Oznaka vrijednosti (neobavezno)',
'tags_explain' => "Add some tags to better categorise your content. \n You can assign a value to a tag for more in-depth organisation.",
'tags_add' => 'Dodaj oznaku',
'tags_remove' => 'Makni oznaku',
'attachments' => 'Prilozi',
'attachments_explain' => 'Dodajte datoteke ili poveznice za prikaz na vašoj stranici. Vidljive su na rubnoj oznaci stranice.',
'attachments_explain_instant_save' => 'Promjene se automatski spremaju.',
'attachments_items' => 'Dodane stavke',
'attachments_upload' => 'Dodaj datoteku',
'attachments_link' => 'Dodaj poveznicu',
'attachments_set_link' => 'Postavi poveznicu',
'attachments_delete' => 'Jeste li sigurni da želite izbrisati ovu stavku?',
'attachments_dropzone' => 'Dodajte datoteke ili kliknite ovdje',
'attachments_no_files' => 'Nijedna datoteka nije prenesena',
'attachments_explain_link' => 'Možete dodati poveznicu ako ne želite prenijeti datoteku. Poveznica može voditi na drugu stranicu ili datoteku.',
'attachments_link_name' => 'Ime poveznice',
'attachment_link' => 'Poveznica na privitak',
'attachments_link_url' => 'Poveznica na datoteku',
'attachments_link_url_hint' => 'Url ili stranica ili datoteka',
'attach' => 'Dodaj',
'attachments_insert_link' => 'Dodaj poveznicu na stranicu',
'attachments_edit_file' => 'Uredi datoteku',
'attachments_edit_file_name' => 'Ime datoteke',
'attachments_edit_drop_upload' => 'Dodaj datoteku ili klikni ovdje za prijenos',
'attachments_order_updated' => 'Ažurirani popis priloga',
'attachments_updated_success' => 'Ažurirani detalji priloga',
'attachments_deleted' => 'Izbrisani prilozi',
'attachments_file_uploaded' => 'Datoteka je uspješno prenešena',
'attachments_file_updated' => 'Datoteka je uspješno ažurirana',
'attachments_link_attached' => 'Poveznica je dodana na stranicu',
'templates' => 'Predlošci',
'templates_set_as_template' => 'Stranica je predložak',
'templates_explain_set_as_template' => 'Ovu stranicu možete postaviti pomoću predloška koji možete koristiti tijekom stvaranja drugih stranica. Ostali korisnici će ga također moći koristiti ako imaju dopuštenje.',
'templates_replace_content' => 'Zamjeni sadržaj stranice',
'templates_append_content' => 'Dodaj sadržaju stranice',
'templates_prepend_content' => 'Dodaj na sadržaj stranice',
// Profile View
'profile_user_for_x' => 'Korisnik za :time',
'profile_created_content' => 'Stvoreni sadržaj',
'profile_not_created_pages' => ':userName nije kreirao nijednu stranicu',
'profile_not_created_chapters' => ':userName nije kreirao nijedno poglavlje',
'profile_not_created_books' => ':userName nije kreirao nijednu knjigu',
'profile_not_created_shelves' => ':userName nije kreirao nijednu policu',
// Comments
'comment' => 'Komentar',
'comments' => 'Komentari',
'comment_add' => 'Dodaj komentar',
'comment_placeholder' => 'Komentar ostavi ovdje',
'comment_count' => '{0} Nema komentara|{1} 1 Komentar|[2,*] :count Komentara',
'comment_save' => 'Spremi komentar',
'comment_saving' => 'Spremanje komentara',
'comment_deleting' => 'Brisanje komentara',
'comment_new' => 'Novi komentar',
'comment_created' => 'komentirano :createDiff',
'comment_updated' => 'Ažurirano :updateDiff od :username',
'comment_deleted_success' => 'Izbrisani komentar',
'comment_created_success' => 'Dodani komentar',
'comment_updated_success' => 'Ažurirani komentar',
'comment_delete_confirm' => 'Jeste li sigurni da želite izbrisati ovaj komentar?',
'comment_in_reply_to' => 'Odgovor na :commentId',
// Revision
'revision_delete_confirm' => 'Jeste li sigurni da želite izbrisati ovaj ispravak?',
'revision_restore_confirm' => 'Jeste li sigurni da želite vratiti ovaj ispravak? Trenutni sadržaj će biti zamijenjen.',
'revision_delete_success' => 'Izbrisani ispravak',
'revision_cannot_delete_latest' => 'Posljednji ispravak se ne može izbrisati.'
];

View File

@ -0,0 +1,105 @@
<?php
/**
* Text shown in error messaging.
*/
return [
// Permissions
'permission' => 'Nemate dopuštenje za pristup traženoj stranici.',
'permissionJson' => 'Nemate potrebno dopuštenje.',
// Auth
'error_user_exists_different_creds' => 'Korisnik s mailom :email već postoji, ali s drugom vjerodajnicom.',
'email_already_confirmed' => 'Email je već potvrđen, pokušajte se logirati.',
'email_confirmation_invalid' => 'Ova vjerodajnica nije valjana ili je već bila korištena. Pokušajte se ponovno registrirati.',
'email_confirmation_expired' => 'Ova vjerodajnica je istekla. Poslan je novi email za pristup.',
'email_confirmation_awaiting' => 'Email adresa za račun koji se koristi mora biti potvrđen',
'ldap_fail_anonymous' => 'LDAP pristup nije uspio zbog anonimnosti',
'ldap_fail_authed' => 'LDAP pristup nije uspio',
'ldap_extension_not_installed' => 'LDAP PHP ekstenzija nije instalirana',
'ldap_cannot_connect' => 'Nemoguće pristupiti ldap serveru, problem s mrežom',
'saml_already_logged_in' => 'Već ste prijavljeni',
'saml_user_not_registered' => 'Korisnik :name nije registriran i automatska registracija je onemogućena',
'saml_no_email_address' => 'Nismo pronašli email adresu za ovog korisnika u vanjskim sustavima',
'saml_invalid_response_id' => 'Sustav za autentifikaciju nije prepoznat. Ovaj problem možda je nastao zbog vraćanja nakon prijave.',
'saml_fail_authed' => 'Prijava pomoću :system nije uspjela zbog neuspješne autorizacije',
'social_no_action_defined' => 'Nije definirana nijedna radnja',
'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
'social_account_in_use' => 'Ovaj :socialAccount račun se već koristi. Pokušajte se prijaviti pomoću :socialAccount računa.',
'social_account_email_in_use' => 'Ovaj mail :email se već koristi. Ako već imate naš račun možete se prijaviti pomoću :socialAccount računa u postavkama vašeg profila.',
'social_account_existing' => 'Ovaj :socialAccount je već dodan u vaš profil.',
'social_account_already_used_existing' => 'Ovaj :socialAccount već koristi drugi korisnik.',
'social_account_not_used' => 'Ovaj :socialAccount račun ne koristi nijedan korisnik. Dodajte ga u postavke svog profila.',
'social_account_register_instructions' => 'Ako nemate račun možete se registrirati pomoću :socialAccount opcija.',
'social_driver_not_found' => 'Nije pronađeno',
'social_driver_not_configured' => 'Postavke vašeg :socialAccount računa nisu ispravno postavljene.',
'invite_token_expired' => 'Vaša pozivnica je istekla. Pokušajte ponovno postaviti lozinku.',
// System
'path_not_writable' => 'Datoteka :filePath ne može se prenijeti. Učinite je lakše prepoznatljivom vašem serveru.',
'cannot_get_image_from_url' => 'Nemoguće preuzeti sliku sa :url',
'cannot_create_thumbs' => 'Provjerite imate li instaliranu GD PHP ekstenziju.',
'server_upload_limit' => 'Prevelika količina za server. Pokušajte prenijeti manju veličinu.',
'uploaded' => 'Prevelika količina za server. Pokušajte prenijeti manju veličinu.',
'image_upload_error' => 'Problem s prenosom slike',
'image_upload_type_error' => 'Nepodržani format slike',
'file_upload_timeout' => 'Isteklo vrijeme za prijenos datoteke.',
// Attachments
'attachment_not_found' => 'Prilozi nisu pronađeni',
// Pages
'page_draft_autosave_fail' => 'Problem sa spremanjem nacrta. Osigurajte stabilnu internetsku vezu.',
'page_custom_home_deletion' => 'Stranica označena kao naslovnica ne može se izbrisati',
// Entities
'entity_not_found' => 'Nije pronađeno',
'bookshelf_not_found' => 'Polica nije pronađena',
'book_not_found' => 'Knjiga nije pronađena',
'page_not_found' => 'Stranica nije pronađena',
'chapter_not_found' => 'Poglavlje nije pronađeno',
'selected_book_not_found' => 'Odabrana knjiga nije pronađena',
'selected_book_chapter_not_found' => 'Odabrane knjige ili poglavlja nisu pronađena',
'guests_cannot_save_drafts' => 'Gosti ne mogu spremiti nacrte',
// Users
'users_cannot_delete_only_admin' => 'Ne možete izbrisati',
'users_cannot_delete_guest' => 'Ne možete izbrisati',
// Roles
'role_cannot_be_edited' => 'Ne može se urediti',
'role_system_cannot_be_deleted' => 'Sistemske postavke ne možete izbrisati',
'role_registration_default_cannot_delete' => 'Ne može se izbrisati',
'role_cannot_remove_only_admin' => 'Učinite drugog korisnika administratorom prije uklanjanja ove administratorske uloge.',
// Comments
'comment_list' => 'Pogreška prilikom dohvaćanja komentara.',
'cannot_add_comment_to_draft' => 'Ne možete ostaviti komentar na ovaj nacrt.',
'comment_add' => 'Greška prilikom dodavanja ili ažuriranja komentara.',
'comment_delete' => 'Greška prilikom brisanja komentara.',
'empty_comment' => 'Ne možete ostaviti prazan komentar.',
// Error pages
'404_page_not_found' => 'Stranica nije pronađena',
'sorry_page_not_found' => 'Žao nam je, stranica koju tražite nije pronađena.',
'sorry_page_not_found_permission_warning' => 'Ako smatrate da ova stranica još postoji, ali je ne vidite, moguće je da nemate omogućen pristup.',
'image_not_found' => 'Image Not Found',
'image_not_found_subtitle' => 'Sorry, The image file you were looking for could not be found.',
'image_not_found_details' => 'If you expected this image to exist it might have been deleted.',
'return_home' => 'Povratak na početno',
'error_occurred' => 'Došlo je do pogreške',
'app_down' => ':appName trenutno nije dostupna',
'back_soon' => 'Uskoro će se vratiti.',
// API errors
'api_no_authorization_found' => 'Nije pronađena autorizacija',
'api_bad_authorization_format' => 'Pogreška prilikom autorizacije',
'api_user_token_not_found' => 'Format autorizacije nije podržan',
'api_incorrect_token_secret' => 'Netočan API token',
'api_user_no_api_permission' => 'Vlasnik API tokena nema potrebna dopuštenja',
'api_user_token_expired' => 'Autorizacija je istekla',
// Settings & Maintenance
'maintenance_test_email_failure' => 'Pogreška prilikom slanja testnog email:',
];

View File

@ -0,0 +1,12 @@
<?php
/**
* Pagination Language Lines
* The following language lines are used by the paginator library to build
* the simple pagination links.
*/
return [
'previous' => '&laquo; Prethodno',
'next' => 'Sljedeće &raquo;',
];

View File

@ -0,0 +1,15 @@
<?php
/**
* Password Reminder Language Lines
* 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.
*/
return [
'password' => 'Lozinka mora imati najmanje 8 znakova i biti potvrđena.',
'user' => "We can't find a user with that e-mail address.",
'token' => 'Ponovno postavljanje lozinke nemoguće putem ove adrese.',
'sent' => 'Na vašu email adresu poslana je poveznica za ponovno postavljanje!',
'reset' => 'Vaša je lozinka ponovno postavljena!',
];

View File

@ -0,0 +1,267 @@
<?php
/**
* Settings text strings
* Contains all text strings used in the general settings sections of BookStack
* including users and roles.
*/
return [
// Common Messages
'settings' => 'Postavke',
'settings_save' => 'Spremi postavke',
'settings_save_success' => 'Postavke spremljene',
// App Settings
'app_customization' => 'Prilagođavanje',
'app_features_security' => 'Značajke & Sigurnost',
'app_name' => 'Ime aplikacije',
'app_name_desc' => 'Ime je vidljivo u zaglavlju i svakoj sistemskoj poruci.',
'app_name_header' => 'Prikaži ime u zaglavlju',
'app_public_access' => 'Javni pristup',
'app_public_access_desc' => 'Omogućavanje ove postavke pristup sadržaju imat će svi posjetitelji BookStack čak i ako nisu prijavljeni.',
'app_public_access_desc_guest' => 'Javni pristup može se urediti putem opcije "Gost".',
'app_public_access_toggle' => 'Dozvoli javni pristup',
'app_public_viewing' => 'Dozvoljen javni pristup?',
'app_secure_images' => 'Visoka razina sigurnosti prijenosa slika',
'app_secure_images_toggle' => 'Omogući visoku sigurnost prijenosa slika',
'app_secure_images_desc' => 'Zbog specifične izvedbe sve su slike javne. Osigurajte da indeksi direktorija nisu omogućeni kako bi se spriječio neovlašten pristup.',
'app_editor' => 'Uređivač stranice',
'app_editor_desc' => 'Odaberite uređivače stranica',
'app_custom_html' => 'Prilagođeni HTML sadržaj',
'app_custom_html_desc' => 'Sav sadržaj dodan ovdje bit će umetnut na dno <glavne> stranice. To je korisno za stiliziranje i dodavanje analitičkog koda.',
'app_custom_html_disabled_notice' => 'Prilagođeni HTML je onemogućen kako bi se osiguralo vraćanje promjena u slučaju kvara.',
'app_logo' => 'Logo aplikacije',
'app_logo_desc' => 'Slika smije biti najviše 43px u visinu. <br>Velike slike će biti smanjene.',
'app_primary_color' => 'Primarna boja aplikacije',
'app_primary_color_desc' => 'Postavlja primarnu boju za aplikaciju uključujući natpis, gumbe i veze.',
'app_homepage' => 'Glavna stranica aplikacije',
'app_homepage_desc' => 'Odaberite prikaz svoje glavne stranice umjesto već zadane. Za odabrane stranice ne vrijede zadana dopuštenja.',
'app_homepage_select' => 'Odaberi stranicu',
'app_footer_links' => 'Podnožje',
'app_footer_links_desc' => 'Odaberite poveznice koje će biti vidljive u podnožju većina stranica čak i na nekima koje ne zahtijevaju prijavu. Na primjer, oznaku "trans::common.privacy_policy" možete koristiti za sistemski definirani prijevod teksta "Politika Privatnosti", a za "Uvjete korištenja" možete koristiti "trans::common.terms_of_service".',
'app_footer_links_label' => 'Oznaka veze',
'app_footer_links_url' => 'Oznaka URL',
'app_footer_links_add' => 'Dodaj vezu na podnožje',
'app_disable_comments' => 'Onemogući komentare',
'app_disable_comments_toggle' => 'Onemogući komentare',
'app_disable_comments_desc' => 'Onemogući komentare za sve stranice u aplikaciji. <br> Postojeći komentari nisu prikazani.',
// Color settings
'content_colors' => 'Boja sadržaja',
'content_colors_desc' => 'Postavljanje boja za sve elemente stranice. Preporuča se odabir boja čija je svjetlina slična zadanim bojama.',
'bookshelf_color' => 'Boja police',
'book_color' => 'Boja knjige',
'chapter_color' => 'Boja poglavlja',
'page_color' => 'Boja stranice',
'page_draft_color' => 'Boja nacrta',
// Registration Settings
'reg_settings' => 'Registracija',
'reg_enable' => 'Omogući registraciju',
'reg_enable_toggle' => 'Omogući registraciju',
'reg_enable_desc' => 'Ako je omogućeno korisnik se može sam registrirati nakon čega će mu biti dodijeljena jedna od korisničkih uloga.',
'reg_default_role' => 'Zadaj ulogu korisnika nakon registracije',
'reg_enable_external_warning' => 'Gornja opcija se zanemaruje ako postoji LDAP ili SAML autorifikacija. Korisnički računi za nepostojeće članove automatski će se kreirati ako je vanjska provjera autentičnosti bila uspješna.',
'reg_email_confirmation' => 'Potvrda e maila',
'reg_email_confirmation_toggle' => 'Zahtjev za potvrdom e maila',
'reg_confirm_email_desc' => 'Ako postoje ograničenja domene potvrda e maila će se zahtijevati i ova će se opcija zanemariti.',
'reg_confirm_restrict_domain' => 'Ograničenja domene',
'reg_confirm_restrict_domain_desc' => 'Unesite popis email domena kojima želite ograničiti registraciju i odvojite ih zarezom. Korisnicima će se slati email prije interakcije s aplikacijom. <br> Uzmite u obzir da će korisnici moći koristiti druge e mail adrese nakon uspješne registracije.',
'reg_confirm_restrict_domain_placeholder' => 'Bez ograničenja',
// Maintenance settings
'maint' => 'Održavanje',
'maint_image_cleanup' => 'Čišćenje slika',
'maint_image_cleanup_desc' => "Scans page & revision content to check which images and drawings are currently in use and which images are redundant. Ensure you create a full database and image backup before running this.",
'maint_delete_images_only_in_revisions' => 'Izbriši slike koje postoje u prijašnjim revizijama',
'maint_image_cleanup_run' => 'Pokreni čišćenje',
'maint_image_cleanup_warning' => ':count moguće neiskorištene slike. Jeste li sigurni da želite izbrisati ove slike?',
'maint_image_cleanup_success' => ':count moguće neiskorištene slike su pronađene i izbrisane!',
'maint_image_cleanup_nothing_found' => 'Nema neiskorištenih slika, Ništa nije izbrisano!',
'maint_send_test_email' => 'Pošalji testni Email',
'maint_send_test_email_desc' => 'Na ovaj način šaljete testni Email na adresu navedenu u vašem profilu.',
'maint_send_test_email_run' => 'Pošalji testni email',
'maint_send_test_email_success' => 'Email je poslan na :address',
'maint_send_test_email_mail_subject' => 'Testni email',
'maint_send_test_email_mail_greeting' => 'Email se može koristiti!',
'maint_send_test_email_mail_text' => 'Čestitamo! Ako ste primili ovaj e mail znači da ćete ga moći koristiti.',
'maint_recycle_bin_desc' => 'Izbrisane police, knjige, poglavlja i stranice poslane su u Recycle bin i mogu biti vraćene ili trajno izbrisane. Starije stavke bit će automatski izbrisane nakon nekog vremena što ovisi o konfiguraciji sustava.',
'maint_recycle_bin_open' => 'Otvori Recycle Bin',
// Recycle Bin
'recycle_bin' => 'Recycle Bin',
'recycle_bin_desc' => 'Ovdje možete vratiti izbrisane stavke ili ih trajno ukloniti iz sustava. Popis nije filtriran kao što su to popisi u kojima su omogućeni filteri.',
'recycle_bin_deleted_item' => 'Izbrisane stavke',
'recycle_bin_deleted_by' => 'Izbrisano od',
'recycle_bin_deleted_at' => 'Vrijeme brisanja',
'recycle_bin_permanently_delete' => 'Trajno izbrisano',
'recycle_bin_restore' => 'Vrati',
'recycle_bin_contents_empty' => 'Recycle Bin je prazan',
'recycle_bin_empty' => 'Isprazni Recycle Bin',
'recycle_bin_empty_confirm' => 'Ovo će trajno obrisati sve stavke u Recycle Bin i sadržaje povezane s njima. Jeste li sigurni da želite isprazniti Recycle Bin?',
'recycle_bin_destroy_confirm' => 'Ovom radnjom ćete trajno izbrisati ovu stavku i nećete je više moći vratiti. Želite li je trajno izbrisati?',
'recycle_bin_destroy_list' => 'Stavke koje treba izbrisati',
'recycle_bin_restore_list' => 'Stavke koje treba vratiti',
'recycle_bin_restore_confirm' => 'Ova radnja vraća izbrisane stavke i njene podređene elemente na prvobitnu lokaciju. Ako je nadređena stavka izbrisana i nju treba vratiti.',
'recycle_bin_restore_deleted_parent' => 'S obzirom da je nadređena stavka obrisana najprije treba vratiti nju.',
'recycle_bin_destroy_notification' => 'Ukupno izbrisane :count stavke iz Recycle Bin',
'recycle_bin_restore_notification' => 'Ukupno vraćene :count stavke iz Recycle Bin',
// Audit Log
'audit' => 'Dnevnik revizije',
'audit_desc' => 'Ovaj dnevnik revizije prikazuje popis aktivnosti zabilježene u sustavu. Ovaj popis nije definiran budući da nisu postavljeni filteri.',
'audit_event_filter' => 'Filter događaja',
'audit_event_filter_no_filter' => 'Bez filtera',
'audit_deleted_item' => 'Izbrisane stavke',
'audit_deleted_item_name' => 'Ime: :name',
'audit_table_user' => 'Korisnik',
'audit_table_event' => 'Događaj',
'audit_table_related' => 'Povezana stavka ili detalj',
'audit_table_date' => 'Datum aktivnosti',
'audit_date_from' => 'Rangiraj datum od',
'audit_date_to' => 'Rangiraj datum do',
// Role Settings
'roles' => 'Uloge',
'role_user_roles' => 'Uloge korisnika',
'role_create' => 'Stvori novu ulogu',
'role_create_success' => 'Uloga uspješno stvorena',
'role_delete' => 'Izbriši ulogu',
'role_delete_confirm' => 'Ovo će izbrisati ulogu povezanu s imenom \':roleName\'.',
'role_delete_users_assigned' => 'Ova uloga dodijeljena je :userCount. Ako želite premjestiti korisnike iz ove uloge odaberite novu ulogu u nastavku.',
'role_delete_no_migration' => "Don't migrate users",
'role_delete_sure' => 'Jeste li sigurni da želite obrisati ovu ulogu?',
'role_delete_success' => 'Uloga je uspješno izbrisana',
'role_edit' => 'Uredi ulogu',
'role_details' => 'Detalji uloge',
'role_name' => 'Ime uloge',
'role_desc' => 'Kratki opis uloge',
'role_external_auth_id' => 'Autorizacija',
'role_system' => 'Dopuštenja sustava',
'role_manage_users' => 'Upravljanje korisnicima',
'role_manage_roles' => 'Upravljanje ulogama i dopuštenjima',
'role_manage_entity_permissions' => 'Upravljanje dopuštenjima nad knjigama, poglavljima i stranicama',
'role_manage_own_entity_permissions' => 'Upravljanje dopuštenjima vlastitih knjiga, poglavlja i stranica',
'role_manage_page_templates' => 'Upravljanje predlošcima stranica',
'role_access_api' => 'API pristup',
'role_manage_settings' => 'Upravljanje postavkama aplikacija',
'role_asset' => 'Upravljanje vlasništvom',
'roles_system_warning' => 'Uzmite u obzir da pristup bilo kojem od ovih dopuštenja dozvoljavate korisniku upravljanje dopuštenjima ostalih u sustavu. Ova dopuštenja dodijelite pouzdanim korisnicima.',
'role_asset_desc' => 'Ova dopuštenja kontroliraju zadane pristupe. Dopuštenja za knjige, poglavlja i stranice ih poništavaju.',
'role_asset_admins' => 'Administratori automatski imaju pristup svim sadržajima, ali ove opcije mogu prikazati ili sakriti korisnička sučelja.',
'role_all' => 'Sve',
'role_own' => 'Vlastito',
'role_controlled_by_asset' => 'Kontrolirano od strane vlasnika',
'role_save' => 'Spremi ulogu',
'role_update_success' => 'Uloga uspješno ažurirana',
'role_users' => 'Korisnici u ovoj ulozi',
'role_users_none' => 'Trenutno nijedan korisnik nije u ovoj ulozi',
// Users
'users' => 'Korisnici',
'user_profile' => 'Profil korisnika',
'users_add_new' => 'Dodajte novog korisnika',
'users_search' => 'Pretražite korisnike',
'users_latest_activity' => 'Zadnje aktivnosti',
'users_details' => 'Detalji korisnika',
'users_details_desc' => 'Postavite prikaz imena i email adrese za ovog korisnika. Email adresa koristit će se za prijavu u aplikaciju.',
'users_details_desc_no_email' => 'Postavite prikaz imena ovog korisnika da ga drugi mogu prepoznati.',
'users_role' => 'Uloge korisnika',
'users_role_desc' => 'Odaberite koje će uloge biti dodijeljene ovom korisniku. Ako korisnik ima više uloga njihova će se dopuštenja prilagoditi.',
'users_password' => 'Lozinka korisnika',
'users_password_desc' => 'Postavite lozinku za prijavu u aplikaciju. Mora imati najmanje 6 znakova.',
'users_send_invite_text' => 'Možete odabrati slanje e maila korisniku i dozvoliti mu da postavi svoju lozinku ili vi to možete učiniti za njega.',
'users_send_invite_option' => 'Pošaljite pozivnicu korisniku putem emaila',
'users_external_auth_id' => 'Vanjska autorizacija',
'users_external_auth_id_desc' => 'Ovaj ID koristi se za komunikaciju s vanjskim sustavom za autorizaciju.',
'users_password_warning' => 'Ispunite dolje samo ako želite promijeniti lozinku.',
'users_system_public' => 'Ovaj korisnik predstavlja bilo kojeg gosta. Dodjeljuje se automatski.',
'users_delete' => 'Izbrišite korisnika',
'users_delete_named' => 'Izbrišite korisnika :userName',
'users_delete_warning' => 'Ovo će ukloniti korisnika \':userName\' iz sustava.',
'users_delete_confirm' => 'Jeste li sigurni da želite izbrisati ovog korisnika?',
'users_migrate_ownership' => 'Premjestite vlasništvo',
'users_migrate_ownership_desc' => 'Ovdje odaberite korisnika kojem ćete dodijeliti vlasništvo i sve stavke povezane s njim.',
'users_none_selected' => 'Nije odabran nijedan korisnik',
'users_delete_success' => 'Korisnik je uspješno premješten',
'users_edit' => 'Uredite korisnika',
'users_edit_profile' => 'Uredite profil',
'users_edit_success' => 'Korisnik je uspješno ažuriran',
'users_avatar' => 'Korisnički avatar',
'users_avatar_desc' => 'Odaberite sliku koja će predstavljati korisnika. Maksimalno 256px.',
'users_preferred_language' => 'Prioritetni jezik',
'users_preferred_language_desc' => 'Ova će opcija promijeniti jezik korisničkog sučelja. Neće utjecati na sadržaj.',
'users_social_accounts' => 'Računi društvenih mreža',
'users_social_accounts_info' => 'Ovdje možete povezati račun s onim na društvenim mrežama za bržu i lakšu prijavu. Ako se odspojite ovdje to neće utjecati na prethodnu autorizaciju. Na postavkama računa vaše društvene mreže možete opozvati pristup.',
'users_social_connect' => 'Poveži račun',
'users_social_disconnect' => 'Odvoji račun',
'users_social_connected' => ':socialAccount račun je uspješno dodan vašem profilu.',
'users_social_disconnected' => ':socialAccount račun je uspješno odvojen od vašeg profila.',
'users_api_tokens' => 'API tokeni',
'users_api_tokens_none' => 'Nijedan API token nije stvoren za ovog korisnika',
'users_api_tokens_create' => 'Stvori token',
'users_api_tokens_expires' => 'Isteklo',
'users_api_tokens_docs' => 'API dokumentacija',
// API Tokens
'user_api_token_create' => 'Stvori API token',
'user_api_token_name' => 'Ime',
'user_api_token_name_desc' => 'Imenujte svoj token na način da prepoznate njegovu svrhu.',
'user_api_token_expiry' => 'Datum isteka',
'user_api_token_expiry_desc' => 'Postavite datum kada token istječe. Ostavljanjem ovog polja praznim automatski se postavlja dugoročno razdoblje.',
'user_api_token_create_secret_message' => 'Odmah nakon kreiranja tokena prikazat će se "Token ID" i "Token Secret". To će se prikazati samo jednom i zato preporučujemo da ga spremite na sigurno.',
'user_api_token_create_success' => 'API token uspješno kreiran',
'user_api_token_update_success' => 'API token uspješno ažuriran',
'user_api_token' => 'API token',
'user_api_token_id' => 'Token ID',
'user_api_token_id_desc' => 'Ovaj sistemski generiran identifikator ne može se uređivati i bit će potreban pri API zahtjevima.',
'user_api_token_secret' => 'Token Secret',
'user_api_token_secret_desc' => 'Ovaj sistemski generirani Token Secret trebat ćete za API zahtjev. Prikazuje se samo prvi put i zato ga spremite na sigurno.',
'user_api_token_created' => 'Token kreiran :timeAgo',
'user_api_token_updated' => 'Token ažuriran :timeAgo',
'user_api_token_delete' => 'Izbriši token',
'user_api_token_delete_warning' => 'Ovo će potpuno izbrisati API token naziva \':tokenName\' iz našeg sustava.',
'user_api_token_delete_confirm' => 'Jeste li sigurni da želite izbrisati ovaj API token?',
'user_api_token_delete_success' => 'API token uspješno izbrisan',
//! If editing translations files directly please ignore this in all
//! languages apart from en. Content will be auto-copied from en.
//!////////////////////////////////
'language_select' => [
'en' => 'English',
'ar' => 'العربية',
'bg' => 'Bǎlgarski',
'bs' => 'Bosanski',
'ca' => 'Català',
'cs' => 'Česky',
'da' => 'Dansk',
'de' => 'Deutsch (Sie)',
'de_informal' => 'Deutsch (Du)',
'es' => 'Español',
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',
'ja' => '日本語',
'ko' => '한국어',
'lv' => 'Latviešu Valoda',
'nl' => 'Nederlands',
'nb' => 'Norsk (Bokmål)',
'pl' => 'Polski',
'pt' => 'Português',
'pt_BR' => 'Português do Brasil',
'ru' => 'Русский',
'sk' => 'Slovensky',
'sl' => 'Slovenščina',
'sv' => 'Svenska',
'tr' => 'Türkçe',
'uk' => 'Українська',
'vi' => 'Tiếng Việt',
'zh_CN' => '简体中文',
'zh_TW' => '繁體中文',
]
//!////////////////////////////////
];

View File

@ -0,0 +1,114 @@
<?php
/**
* Validation Lines
* The following language lines contain the default error messages used by
* the validator class. Some of these rules have multiple versions such
* as the size rules. Feel free to tweak each of these messages here.
*/
return [
// Standard laravel validation lines
'accepted' => ':attribute mora biti prihvaćen.',
'active_url' => ':attribute nema valjan URL.',
'after' => ':attribute mora biti nakon :date.',
'alpha' => ':attribute može sadržavati samo slova.',
'alpha_dash' => ':attribute može sadržavati samo slova, brojeve, crtice i donje crtice.',
'alpha_num' => ':attribute može sadržavati samo slova i brojeve.',
'array' => ':attribute mora biti niz.',
'before' => ':attribute mora biti prije :date.',
'between' => [
'numeric' => ':attribute mora biti između :min i :max.',
'file' => ':attribute mora biti između :min i :max kilobajta.',
'string' => ':attribute mora biti između :min i :max znakova.',
'array' => ':attribute mora biti između :min i :max stavki',
],
'boolean' => ':attribute mora biti točno ili netočno.',
'confirmed' => ':attribute potvrde se ne podudaraju.',
'date' => ':attribute nema valjani datum.',
'date_format' => ':attribute ne odgovara formatu :format.',
'different' => ':attribute i :other se moraju razlikovati.',
'digits' => ':attribute mora biti :digits znakova.',
'digits_between' => ':attribute mora biti između :min i :max znamenki.',
'email' => ':attribute mora biti valjana email adresa.',
'ends_with' => ':attribute mora završiti s :values',
'filled' => ':attribute polje je obavezno.',
'gt' => [
'numeric' => ':attribute mora biti veći od :value.',
'file' => ':attribute mora biti veći od :value kilobajta.',
'string' => ':attribute mora biti veći od :value znakova',
'array' => ':attribute mora biti veći od :value stavki.',
],
'gte' => [
'numeric' => ':attribute mora biti veći ili jednak :value.',
'file' => ':attribute mora biti veći ili jednak :value kilobajta.',
'string' => ':attribute mora biti veći ili jednak :value znakova.',
'array' => ':attribute mora imati :value stavki ili više.',
],
'exists' => 'Odabrani :attribute ne vrijedi.',
'image' => ':attribute mora biti slika.',
'image_extension' => ':attribute mora imati valjanu i podržanu ekstenziju.',
'in' => 'Odabrani :attribute ne vrijedi.',
'integer' => ':attribute mora biti cijeli broj.',
'ip' => ':attribute mora biti valjana IP adresa.',
'ipv4' => ':attribute mora biti valjana IPv4 adresa.',
'ipv6' => ':attribute mora biti valjana IPv6 adresa.',
'json' => ':attribute mora biti valjani JSON niz.',
'lt' => [
'numeric' => ':attribute mora biti manji od :value.',
'file' => ':attribute mora biti manji od :value kilobajta.',
'string' => ':attribute mora biti manji od :value znakova.',
'array' => ':attribute mora biti manji od :value stavki.',
],
'lte' => [
'numeric' => ':attribute mora biti manji ili jednak :value.',
'file' => ':attribute mora biti manji ili jednak :value kilobajta.',
'string' => ':attribute mora biti manji ili jednak :value znakova.',
'array' => ':attribute mora imati više od :value stavki.',
],
'max' => [
'numeric' => ':attribute ne smije biti veći od :max.',
'file' => ':attribute ne smije biti veći od :max kilobajta.',
'string' => ':attribute ne smije biti duži od :max znakova.',
'array' => ':attribute ne smije imati više od :max stavki.',
],
'mimes' => ':attribute mora biti datoteka tipa: :values.',
'min' => [
'numeric' => ':attribute mora biti najmanje :min.',
'file' => ':attribute mora imati najmanje :min kilobajta.',
'string' => ':attribute mora imati najmanje :min znakova.',
'array' => ':attribute mora imati najmanje :min stavki.',
],
'not_in' => 'Odabrani :attribute ne vrijedi.',
'not_regex' => 'Format :attribute nije valjan.',
'numeric' => ':attribute mora biti broj.',
'regex' => 'Format :attribute nije valjan.',
'required' => ':attribute polje je obavezno.',
'required_if' => 'Polje :attribute je obavezno kada :other je :value.',
'required_with' => 'Polje :attribute je potrebno kada :values je sadašnjost.',
'required_with_all' => 'Polje :attribute je potrebno kada :values je sadašnjost.',
'required_without' => 'Polje :attribute je potrebno kada :values nije sadašnjost.',
'required_without_all' => 'Polje :attribute je potrebno kada ništa od :values nije sadašnjost.',
'same' => ':attribute i :other se moraju podudarati.',
'safe_url' => 'Navedena veza možda nije sigurna.',
'size' => [
'numeric' => ':attribute mora biti :size.',
'file' => ':attribute mora biti :size kilobajta.',
'string' => ':attribute mora biti :size znakova.',
'array' => ':attribute mora sadržavati :size stavki.',
],
'string' => ':attribute mora biti niz.',
'timezone' => ':attribute mora biti valjan.',
'unique' => ':attribute se već koristi.',
'url' => 'Format :attribute nije valjan.',
'uploaded' => 'Datoteka se ne može prenijeti. Server možda ne prihvaća datoteke te veličine.',
// Custom validation lines
'custom' => [
'password-confirm' => [
'required_with' => 'Potrebna potvrda lozinke',
],
],
// Custom validation attributes
'attributes' => [],
];

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -6,10 +6,10 @@
return [
// Pages
'page_create' => 'halaman dibuat',
'page_create' => 'telah membuat halaman',
'page_create_notification' => 'Halaman Berhasil dibuat',
'page_update' => 'halaman diperbaharui',
'page_update_notification' => 'Berhasil mengupdate halaman',
'page_update_notification' => 'Halaman Berhasil Diperbarui',
'page_delete' => 'halaman dihapus',
'page_delete_notification' => 'Berhasil menghapus halaman',
'page_restore' => 'halaman telah dipulihkan',
@ -20,7 +20,7 @@ return [
'chapter_create' => 'membuat bab',
'chapter_create_notification' => 'Bab berhasil dibuat',
'chapter_update' => 'bab diperbaharui',
'chapter_update_notification' => 'Bab berhasil diupdate',
'chapter_update_notification' => 'Bab Berhasil Dipebarui',
'chapter_delete' => 'hapus bab',
'chapter_delete_notification' => 'Bab berhasil dihapus',
'chapter_move' => 'bab dipindahkan',
@ -29,25 +29,25 @@ return [
'book_create' => 'membuat buku',
'book_create_notification' => 'Buku berhasil dibuat',
'book_update' => 'update buku',
'book_update_notification' => 'Buku berhasil diupdate',
'book_update_notification' => 'Buku Berhasil Diperbarui',
'book_delete' => 'hapus buku',
'book_delete_notification' => 'Buku berhasil dihapus',
'book_sort' => 'urutkan buku',
'book_sort' => 'buku yang diurutkan',
'book_sort_notification' => 'Buku berhasil diurutkan',
// Bookshelves
'bookshelf_create' => 'membuat rak',
'bookshelf_create_notification' => 'Rak berhasil dibuat',
'bookshelf_update' => 'update rak',
'bookshelf_update_notification' => 'Rak berhasil diupdate',
'bookshelf_update_notification' => 'Rak Berhasil Diperbarui',
'bookshelf_delete' => 'hapus rak buku',
'bookshelf_delete_notification' => 'Rak berhasil dihapus',
// Favourites
'favourite_add_notification' => '":name" has been added to your favourites',
'favourite_remove_notification' => '":name" has been removed from your favourites',
'favourite_add_notification' => '":name" telah ditambahkan ke favorit Anda',
'favourite_remove_notification' => '":name" telah dihapus dari favorit Anda',
// Other
'commented_on' => 'berkomentar pada',
'permissions_update' => 'perbaharui izin',
'permissions_update' => 'izin diperbarui',
];

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -44,8 +44,8 @@ return [
'bookshelf_delete_notification' => 'Libreria Eliminata Correttamente',
// Favourites
'favourite_add_notification' => '":name" has been added to your favourites',
'favourite_remove_notification' => '":name" has been removed from your favourites',
'favourite_add_notification' => '":name" è stato aggiunto ai tuoi preferiti',
'favourite_remove_notification' => '":name" è stato rimosso dai tuoi preferiti',
// Other
'commented_on' => 'ha commentato in',

View File

@ -40,10 +40,10 @@ return [
'remove' => 'Rimuovi',
'add' => 'Aggiungi',
'fullscreen' => 'Schermo intero',
'favourite' => 'Favourite',
'unfavourite' => 'Unfavourite',
'next' => 'Next',
'previous' => 'Previous',
'favourite' => 'Aggiungi ai Preferiti',
'unfavourite' => 'Rimuovi dai preferiti',
'next' => 'Successivo',
'previous' => 'Precedente',
// Sort Options
'sort_options' => 'Opzioni Ordinamento',

View File

@ -27,8 +27,8 @@ return [
'images' => 'Immagini',
'my_recent_drafts' => 'Bozze Recenti',
'my_recently_viewed' => 'Visti di recente',
'my_most_viewed_favourites' => 'My Most Viewed Favourites',
'my_favourites' => 'My Favourites',
'my_most_viewed_favourites' => 'I Miei Preferiti Più Visti',
'my_favourites' => 'I miei Preferiti',
'no_pages_viewed' => 'Non hai visto nessuna pagina',
'no_pages_recently_created' => 'Nessuna pagina è stata creata di recente',
'no_pages_recently_updated' => 'Nessuna pagina è stata aggiornata di recente',

View File

@ -83,9 +83,9 @@ return [
'404_page_not_found' => 'Pagina Non Trovata',
'sorry_page_not_found' => 'La pagina che stavi cercando non è stata trovata.',
'sorry_page_not_found_permission_warning' => 'Se pensi che questa pagina possa esistere, potresti non avere i permessi per visualizzarla.',
'image_not_found' => 'Image Not Found',
'image_not_found_subtitle' => 'Sorry, The image file you were looking for could not be found.',
'image_not_found_details' => 'If you expected this image to exist it might have been deleted.',
'image_not_found' => 'Immagine non trovata',
'image_not_found_subtitle' => 'Spiacente, l\'immagine che stai cercando non è stata trovata.',
'image_not_found_details' => 'Se ti aspettavi che questa immagine esistesse, potrebbe essere stata cancellata.',
'return_home' => 'Ritorna alla home',
'error_occurred' => 'C\'è Stato un errore',
'app_down' => ':appName è offline',

View File

@ -85,12 +85,12 @@ return [
'maint_send_test_email_mail_subject' => 'Email di Test',
'maint_send_test_email_mail_greeting' => 'L\'invio delle email sembra funzionare!',
'maint_send_test_email_mail_text' => 'Congratulazioni! Siccome hai ricevuto questa notifica email, le tue impostazioni sembrano essere configurate correttamente.',
'maint_recycle_bin_desc' => 'Deleted shelves, books, chapters & pages are sent to the recycle bin so they can be restored or permanently deleted. Older items in the recycle bin may be automatically removed after a while depending on system configuration.',
'maint_recycle_bin_desc' => 'Le librerie, i libri, i capitoli e le pagine cancellati vengono inviati al cestino in modo che possano essere ripristinati o eliminati definitivamente. Gli elementi più vecchi nel cestino possono essere automaticamente rimossi dopo un certo periodo, a seconda della configurazione del sistema.',
'maint_recycle_bin_open' => 'Apri il Cestino',
// Recycle Bin
'recycle_bin' => 'Cestino',
'recycle_bin_desc' => 'Here you can restore items that have been deleted or choose to permanently remove them from the system. This list is unfiltered unlike similar activity lists in the system where permission filters are applied.',
'recycle_bin_desc' => 'Qui è possibile ripristinare gli elementi che sono stati eliminati o scegliere di rimuoverli definitivamente dal sistema. Questo elenco non è filtrato a differenza di elenchi di attività simili nel sistema in cui vengono applicati i filtri autorizzazioni.',
'recycle_bin_deleted_item' => 'Elimina Elemento',
'recycle_bin_deleted_by' => 'Cancellato da',
'recycle_bin_deleted_at' => 'Orario Cancellazione',
@ -102,7 +102,7 @@ return [
'recycle_bin_destroy_confirm' => 'Questa operazione eliminerà permanentemente questo elemento (insieme a tutti i relativi elementi elencati qui sotto) dal sistema e non sarà più possibile recuperarlo. Sei sicuro di voler eliminare permanentemente questo elemento?',
'recycle_bin_destroy_list' => 'Elementi da Eliminare definitivamente',
'recycle_bin_restore_list' => 'Elementi da Ripristinare',
'recycle_bin_restore_confirm' => 'This action will restore the deleted item, including any child elements, to their original location. If the original location has since been deleted, and is now in the recycle bin, the parent item will also need to be restored.',
'recycle_bin_restore_confirm' => 'Questa azione ripristinerà l\'elemento eliminato, compresi gli elementi figli, nella loro posizione originale. Se la posizione originale è stata eliminata, ed è ora nel cestino, anche l\'elemento padre dovrà essere ripristinato.',
'recycle_bin_restore_deleted_parent' => 'L\'elemento padre di questo elemento è stato eliminato. Questo elemento rimarrà eliminato fino a che l\'elemento padre non sarà ripristinato.',
'recycle_bin_destroy_notification' => 'Eliminati :count elementi dal cestino.',
'recycle_bin_restore_notification' => 'Ripristinati :count elementi dal cestino.',
@ -146,7 +146,7 @@ return [
'role_access_api' => 'API sistema d\'accesso',
'role_manage_settings' => 'Gestire impostazioni app',
'role_asset' => 'Permessi Entità',
'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.',
'roles_system_warning' => 'Siate consapevoli che l\'accesso a uno dei tre permessi qui sopra, può consentire a un utente di modificare i propri privilegi o i privilegi di altri nel sistema. Assegna ruoli con questi permessi solo ad utenti fidati.',
'role_asset_desc' => 'Questi permessi controllano l\'accesso di default alle entità. I permessi nei Libri, Capitoli e Pagine sovrascriveranno questi.',
'role_asset_admins' => 'Gli amministratori hanno automaticamente accesso a tutti i contenuti ma queste opzioni possono mostrare o nascondere le opzioni della UI.',
'role_all' => 'Tutti',
@ -181,7 +181,7 @@ return [
'users_delete_warning' => 'Questo eliminerà completamente l\'utente \':userName\' dal sistema.',
'users_delete_confirm' => 'Sei sicuro di voler eliminare questo utente?',
'users_migrate_ownership' => 'Cambia Proprietario',
'users_migrate_ownership_desc' => 'Select a user here if you want another user to become the owner of all items currently owned by this user.',
'users_migrate_ownership_desc' => 'Seleziona qui un utente se vuoi che un altro utente diventi il proprietario di tutti gli elementi attualmente di proprietà di questo utente.',
'users_none_selected' => 'Nessun utente selezionato',
'users_delete_success' => 'Utente rimosso con successo',
'users_edit' => 'Modifica Utente',
@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -37,11 +37,11 @@ return [
'app_homepage' => '처음 페이지',
'app_homepage_desc' => '고른 페이지에 설정한 권한은 무시합니다.',
'app_homepage_select' => '문서 고르기',
'app_footer_links' => '푸터 링크',
'app_footer_links_desc' => '사이트 푸터에 표시할 링크들을 추가합니다. 로그인이 필요하지 않은 페이지들을 포함하여 대부분의 페이지 하단에 표시됩니다. 시스템 정의 번역을 사용하기 위해 "trans::<key>"를 사용할 수 있습니다. 예를 들어: "trans::common.privacy_policy"를 사용하면 번역된 "개인정보처리방침"이 제공되며, "trans::common.terms_of_service"는 번역된 "이용약관"를 제공합니다.',
'app_footer_links_label' => '링크 라벨',
'app_footer_links_url' => '링크 URL',
'app_footer_links_add' => '푸터 링크 추가',
'app_footer_links' => 'Footer Links',
'app_footer_links_desc' => 'Add links to show within the site footer. These will be displayed at the bottom of most pages, including those that do not require login. You can use a label of "trans::<key>" to use system-defined translations. For example: Using "trans::common.privacy_policy" will provide the translated text "Privacy Policy" and "trans::common.terms_of_service" will provide the translated text "Terms of Service".',
'app_footer_links_label' => 'Link Label',
'app_footer_links_url' => 'Link URL',
'app_footer_links_add' => 'Add Footer Link',
'app_disable_comments' => '댓글 사용 안 함',
'app_disable_comments_toggle' => '댓글 사용 안 함',
'app_disable_comments_desc' => '모든 페이지에서 댓글을 숨깁니다.',
@ -73,7 +73,7 @@ return [
'maint' => '데이터',
'maint_image_cleanup' => '이미지 정리',
'maint_image_cleanup_desc' => "중복한 이미지를 찾습니다. 실행하기 전에 이미지를 백업하세요.",
'maint_delete_images_only_in_revisions' => '오래된 문서 수정본에만 있는 이미지도 삭제하기',
'maint_delete_images_only_in_revisions' => 'Also delete images that only exist in old page revisions',
'maint_image_cleanup_run' => '실행',
'maint_image_cleanup_warning' => '이미지 :count개를 지울 건가요?',
'maint_image_cleanup_success' => '이미지 :count개 삭제함',
@ -85,38 +85,38 @@ return [
'maint_send_test_email_mail_subject' => '테스트 메일',
'maint_send_test_email_mail_greeting' => '이메일 전송이 성공하였습니다.',
'maint_send_test_email_mail_text' => '축하합니다! 이 메일을 받음으로 이메일 설정이 정상적으로 되었음을 확인하였습니다.',
'maint_recycle_bin_desc' => '삭제된 서가, 책자, 챕터 & 문서들을 휴지통으로 보내져 복구하거나 또는 영구적으로 삭제할 수 있습니다. 휴지통의 오래된 항목은 시스템 구성에 따라 잠시 후 자동으로 삭제될 수 있습니다.',
'maint_recycle_bin_open' => '휴지통 열기',
'maint_recycle_bin_desc' => 'Deleted shelves, books, chapters & pages are sent to the recycle bin so they can be restored or permanently deleted. Older items in the recycle bin may be automatically removed after a while depending on system configuration.',
'maint_recycle_bin_open' => 'Open Recycle Bin',
// Recycle Bin
'recycle_bin' => '휴지통',
'recycle_bin_desc' => '여기서 삭제된 항목을 복원하거나 시스템에서 영구적으로 제거하도록 선택할 수 있습니다. 이 목록은 권한 필터가 적용되는 시스템의 유사한 활동 목록과 달리 필터링되지 않습니다.',
'recycle_bin_deleted_item' => '삭제된 항목',
'recycle_bin_deleted_by' => '삭제자',
'recycle_bin_deleted_at' => '삭제 시간',
'recycle_bin_permanently_delete' => '영구적으로 삭제하기',
'recycle_bin_restore' => '복원하기',
'recycle_bin_contents_empty' => '휴지통은 현재 비어있습니다.',
'recycle_bin_empty' => '휴지통 비우기',
'recycle_bin_empty_confirm' => '각 항목에 포함된 내용을 포함하여 휴지통의 모든 항목이 영구히 삭제됩니다. 휴지통을 비우시겠습니까?',
'recycle_bin_destroy_confirm' => '이 작업을 수행하면 아래 나열된 하위 요소와 함께 이 항목이 시스템에서 영구적으로 삭제되고 이 내용을 복원할 수 없습니다. 이 항목을 완전히 삭제하시겠습니까?',
'recycle_bin_destroy_list' => '삭제할 항목들',
'recycle_bin_restore_list' => '복원할 항목들',
'recycle_bin_restore_confirm' => '이 작업을 수행하면 하위 요소를 포함하여 삭제된 항목이 원래 위치로 복원됩니다. 원래 위치가 삭제되고 현재 휴지통에 있는 경우 상위 항목도 복원해야 합니다.',
'recycle_bin_restore_deleted_parent' => '이 항목의 상위 항목도 삭제되었습니다. 상위 항목도 복원될 때까지 삭제된 상태로 유지됩니다.',
'recycle_bin_destroy_notification' => '휴지통에서 총 :count 개의 항목들이 삭제되었습니다.',
'recycle_bin_restore_notification' => '휴지통에서 총 :count 개의 항목들이 복원되었습니다.',
'recycle_bin' => 'Recycle Bin',
'recycle_bin_desc' => 'Here you can restore items that have been deleted or choose to permanently remove them from the system. This list is unfiltered unlike similar activity lists in the system where permission filters are applied.',
'recycle_bin_deleted_item' => 'Deleted Item',
'recycle_bin_deleted_by' => 'Deleted By',
'recycle_bin_deleted_at' => 'Deletion Time',
'recycle_bin_permanently_delete' => 'Permanently Delete',
'recycle_bin_restore' => 'Restore',
'recycle_bin_contents_empty' => 'The recycle bin is currently empty',
'recycle_bin_empty' => 'Empty Recycle Bin',
'recycle_bin_empty_confirm' => 'This will permanently destroy all items in the recycle bin including content contained within each item. Are you sure you want to empty the recycle bin?',
'recycle_bin_destroy_confirm' => 'This action will permanently delete this item, along with any child elements listed below, from the system and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
'recycle_bin_destroy_list' => 'Items to be Destroyed',
'recycle_bin_restore_list' => 'Items to be Restored',
'recycle_bin_restore_confirm' => 'This action will restore the deleted item, including any child elements, to their original location. If the original location has since been deleted, and is now in the recycle bin, the parent item will also need to be restored.',
'recycle_bin_restore_deleted_parent' => 'The parent of this item has also been deleted. These will remain deleted until that parent is also restored.',
'recycle_bin_destroy_notification' => 'Deleted :count total items from the recycle bin.',
'recycle_bin_restore_notification' => 'Restored :count total items from the recycle bin.',
// Audit Log
'audit' => '감사 기록',
'audit_desc' => '이 감사 로그는 시스템에서 추적한 활동 목록을 표시합니다. 이 목록은 권한 필터가 적용되는 시스템의 유사한 활동 목록과 달리 필터링되지 않습니다.',
'audit_desc' => 'This audit log displays a list of activities tracked in the system. This list is unfiltered unlike similar activity lists in the system where permission filters are applied.',
'audit_event_filter' => '이벤트 필터',
'audit_event_filter_no_filter' => '필터 없음',
'audit_deleted_item' => '삭제된 항목',
'audit_deleted_item_name' => '이름: :name',
'audit_table_user' => '사용자',
'audit_table_event' => '이벤트',
'audit_table_related' => '관련 항목 또는 세부 정보',
'audit_table_related' => 'Related Item or Detail',
'audit_table_date' => '활동 날짜',
'audit_date_from' => '날짜 범위 시작',
'audit_date_to' => '날짜 범위 끝',
@ -146,7 +146,7 @@ return [
'role_access_api' => '시스템 접근 API',
'role_manage_settings' => '사이트 설정 관리',
'role_asset' => '권한 항목',
'roles_system_warning' => '위의 세 가지 권한 중 하나에 액세스하면 사용자가 자신의 권한이나 시스템 내 다른 사용자의 권한을 변경할 수 있습니다. 이러한 권한이 있는 역할만 신뢰할 수 있는 사용자에게 할당합니다.',
'roles_system_warning' => 'Be aware that access to any of the above three permissions can allow a user to alter their own privileges or the privileges of others in the system. Only assign roles with these permissions to trusted users.',
'role_asset_desc' => '책자, 챕터, 문서별 권한은 이 설정에 우선합니다.',
'role_asset_admins' => 'Admin 권한은 어디든 접근할 수 있지만 이 설정은 사용자 인터페이스에서 해당 활동을 표시할지 결정합니다.',
'role_all' => '모든 항목',
@ -162,7 +162,7 @@ return [
'user_profile' => '사용자 프로필',
'users_add_new' => '사용자 만들기',
'users_search' => '사용자 검색',
'users_latest_activity' => '최근 활동',
'users_latest_activity' => 'Latest Activity',
'users_details' => '사용자 정보',
'users_details_desc' => '메일 주소로 로그인합니다.',
'users_details_desc_no_email' => '사용자 이름을 바꿉니다.',
@ -180,10 +180,10 @@ return [
'users_delete_named' => ':userName 삭제',
'users_delete_warning' => ':userName에 관한 데이터를 지웁니다.',
'users_delete_confirm' => '이 사용자를 지울 건가요?',
'users_migrate_ownership' => '소유권 이전',
'users_migrate_ownership_desc' => '다른 사용자가 현재 이 사용자가 소유하고 있는 모든 항목의 소유자가 되려면 여기서 사용자를 선택하십시오.',
'users_none_selected' => '선택된 사용자가 없습니다.',
'users_delete_success' => '사용자가 성공적으로 삭제되었습니다.',
'users_migrate_ownership' => 'Migrate Ownership',
'users_migrate_ownership_desc' => 'Select a user here if you want another user to become the owner of all items currently owned by this user.',
'users_none_selected' => 'No user selected',
'users_delete_success' => 'User successfully removed',
'users_edit' => '사용자 수정',
'users_edit_profile' => '프로필 바꾸기',
'users_edit_success' => '프로필 바꿈',
@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => '히브리어',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -89,7 +89,7 @@ return [
'required_without' => ':values(이)가 없을 때 :attribute(을)를 구성해야 합니다.',
'required_without_all' => ':values(이)가 모두 없을 때 :attribute(을)를 구성해야 합니다.',
'same' => ':attribute(와)과 :other(을)를 똑같이 구성하세요.',
'safe_url' => '제공된 링크가 안전하지 않을 수 있습니다.',
'safe_url' => 'The provided link may not be safe.',
'size' => [
'numeric' => ':attribute(을)를 :size(으)로 구성하세요.',
'file' => ':attribute(을)를 :size킬로바이트로 구성하세요.',

View File

@ -40,10 +40,10 @@ return [
'remove' => 'Noņemt',
'add' => 'Pievienot',
'fullscreen' => 'Pilnekrāns',
'favourite' => 'Favourite',
'unfavourite' => 'Unfavourite',
'next' => 'Next',
'previous' => 'Previous',
'favourite' => 'Pievienot favorītiem',
'unfavourite' => 'Noņemt no favorītiem',
'next' => 'Nākamais',
'previous' => 'Iepriekšējais',
// Sort Options
'sort_options' => 'Kārtošanas Opcijas',

View File

@ -27,7 +27,7 @@ return [
'images' => 'Attēli',
'my_recent_drafts' => 'Mani melnraksti',
'my_recently_viewed' => 'Mani nesen skatītie',
'my_most_viewed_favourites' => 'Mani visvairāk skatītie favorīti',
'my_most_viewed_favourites' => 'Mani biežāk skatītie favorīti',
'my_favourites' => 'Mani favorīti',
'no_pages_viewed' => 'Neviena lapa vēl nav skatīta',
'no_pages_recently_created' => 'Nav radīta neviena lapa',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -42,8 +42,8 @@ return [
'fullscreen' => 'Volledig scherm',
'favourite' => 'Favoriet',
'unfavourite' => 'Verwijderen uit favoriet',
'next' => 'Next',
'previous' => 'Previous',
'next' => 'Volgende',
'previous' => 'Vorige',
// Sort Options
'sort_options' => 'Sorteeropties',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -44,8 +44,8 @@ return [
'bookshelf_delete_notification' => 'Полка успешно удалена',
// Favourites
'favourite_add_notification' => '":name" has been added to your favourites',
'favourite_remove_notification' => '":name" has been removed from your favourites',
'favourite_add_notification' => '":name" добавлено в избранное',
'favourite_remove_notification' => ':name" удалено из избранного',
// Other
'commented_on' => 'прокомментировал',

View File

@ -40,10 +40,10 @@ return [
'remove' => 'Удалить',
'add' => 'Добавить',
'fullscreen' => 'На весь экран',
'favourite' => 'Favourite',
'unfavourite' => 'Unfavourite',
'next' => 'Next',
'previous' => 'Previous',
'favourite' => 'Избранное',
'unfavourite' => 'Убрать из избранного',
'next' => 'Следующая',
'previous' => 'Предыдущая',
// Sort Options
'sort_options' => 'Параметры сортировки',

View File

@ -27,8 +27,8 @@ return [
'images' => 'Изображения',
'my_recent_drafts' => 'Мои последние черновики',
'my_recently_viewed' => 'Мои недавние просмотры',
'my_most_viewed_favourites' => 'My Most Viewed Favourites',
'my_favourites' => 'My Favourites',
'my_most_viewed_favourites' => 'Популярное избранное',
'my_favourites' => 'Мое избранное',
'no_pages_viewed' => 'Вы не просматривали ни одной страницы',
'no_pages_recently_created' => 'Нет недавно созданных страниц',
'no_pages_recently_updated' => 'Нет недавно обновленных страниц',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -242,6 +242,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -44,8 +44,8 @@ return [
'bookshelf_delete_notification' => 'Hyllan har tagits bort',
// Favourites
'favourite_add_notification' => '":name" has been added to your favourites',
'favourite_remove_notification' => '":name" has been removed from your favourites',
'favourite_add_notification' => '":name" har lagts till i dina favoriter',
'favourite_remove_notification' => '":name" har tagits bort från dina favoriter',
// Other
'commented_on' => 'kommenterade',

View File

@ -40,10 +40,10 @@ return [
'remove' => 'Radera',
'add' => 'Lägg till',
'fullscreen' => 'Helskärm',
'favourite' => 'Favourite',
'unfavourite' => 'Unfavourite',
'next' => 'Next',
'previous' => 'Previous',
'favourite' => 'Favorit',
'unfavourite' => 'Ta bort favorit',
'next' => 'Nästa',
'previous' => 'Föregående',
// Sort Options
'sort_options' => 'Sorteringsalternativ',
@ -51,7 +51,7 @@ return [
'sort_ascending' => 'Sortera stigande',
'sort_descending' => 'Sortera fallande',
'sort_name' => 'Namn',
'sort_default' => 'Default',
'sort_default' => 'Standard',
'sort_created_at' => 'Skapad',
'sort_updated_at' => 'Uppdaterad',
@ -69,7 +69,7 @@ return [
'breadcrumb' => 'Brödsmula',
// Header
'header_menu_expand' => 'Expand Header Menu',
'header_menu_expand' => 'Expandera sidhuvudsmenyn',
'profile_menu' => 'Profilmeny',
'view_profile' => 'Visa profil',
'edit_profile' => 'Redigera profil',
@ -78,9 +78,9 @@ return [
// Layout tabs
'tab_info' => 'Information',
'tab_info_label' => 'Tab: Show Secondary Information',
'tab_info_label' => 'Flik: Visa sekundär information',
'tab_content' => 'Innehåll',
'tab_content_label' => 'Tab: Show Primary Content',
'tab_content_label' => 'Flik: Visa primärt innehåll',
// Email Content
'email_action_help' => 'Om du har problem, klicka på knappen ":actionText", och kopiera och klistra in den här adressen i din webbläsare:',
@ -88,6 +88,6 @@ return [
// Footer Link Options
// Not directly used but available for convenience to users.
'privacy_policy' => 'Privacy Policy',
'terms_of_service' => 'Terms of Service',
'privacy_policy' => 'Integritetspolicy',
'terms_of_service' => 'Användarvillkor',
];

View File

@ -22,13 +22,13 @@ return [
'meta_created_name' => 'Skapad :timeLength av :user',
'meta_updated' => 'Uppdaterad :timeLength',
'meta_updated_name' => 'Uppdaterad :timeLength av :user',
'meta_owned_name' => 'Owned by :user',
'meta_owned_name' => 'Ägs av :user',
'entity_select' => 'Välj enhet',
'images' => 'Bilder',
'my_recent_drafts' => 'Mina nyaste utkast',
'my_recently_viewed' => 'Mina senast visade sidor',
'my_most_viewed_favourites' => 'My Most Viewed Favourites',
'my_favourites' => 'My Favourites',
'my_most_viewed_favourites' => 'Mina mest visade favoriter',
'my_favourites' => 'Mina favoriter',
'no_pages_viewed' => 'Du har inte visat några sidor',
'no_pages_recently_created' => 'Inga sidor har skapats nyligen',
'no_pages_recently_updated' => 'Inga sidor har uppdaterats nyligen',
@ -42,7 +42,7 @@ return [
'permissions_intro' => 'Dessa rättigheter kommer att överskrida eventuella rollbaserade rättigheter.',
'permissions_enable' => 'Aktivera anpassade rättigheter',
'permissions_save' => 'Spara rättigheter',
'permissions_owner' => 'Owner',
'permissions_owner' => 'Ägare',
// Search
'search_results' => 'Sökresultat',
@ -62,7 +62,7 @@ return [
'search_permissions_set' => 'Har anpassade rättigheter',
'search_created_by_me' => 'Skapade av mig',
'search_updated_by_me' => 'Uppdaterade av mig',
'search_owned_by_me' => 'Owned by me',
'search_owned_by_me' => 'Ägs av mig',
'search_date_options' => 'Datumalternativ',
'search_updated_before' => 'Uppdaterade före',
'search_updated_after' => 'Uppdaterade efter',
@ -213,7 +213,7 @@ return [
'pages_revisions' => 'Sidrevisioner',
'pages_revisions_named' => 'Sidrevisioner för :pageName',
'pages_revision_named' => 'Sidrevision för :pageName',
'pages_revision_restored_from' => 'Restored from #:id; :summary',
'pages_revision_restored_from' => 'Återställd från #:id; :summary',
'pages_revisions_created_by' => 'Skapad av',
'pages_revisions_date' => 'Revisionsdatum',
'pages_revisions_number' => '#',

View File

@ -83,9 +83,9 @@ return [
'404_page_not_found' => 'Sidan hittades inte',
'sorry_page_not_found' => 'Tyvärr gick det inte att hitta sidan du söker.',
'sorry_page_not_found_permission_warning' => 'Om du förväntade dig att denna sida skulle existera, kanske du inte har behörighet att se den.',
'image_not_found' => 'Image Not Found',
'image_not_found_subtitle' => 'Sorry, The image file you were looking for could not be found.',
'image_not_found_details' => 'If you expected this image to exist it might have been deleted.',
'image_not_found' => 'Bilden hittades inte',
'image_not_found_subtitle' => 'Tyvärr gick det inte att hitta bilden du letade efter.',
'image_not_found_details' => 'Om du förväntade dig att den här bilden skulle finnas kan den ha tagits bort.',
'return_home' => 'Återvänd till startsidan',
'error_occurred' => 'Ett fel inträffade',
'app_down' => ':appName är nere just nu',

View File

@ -37,11 +37,11 @@ return [
'app_homepage' => 'Startsida',
'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_footer_links' => 'Footer Links',
'app_footer_links_desc' => 'Add links to show within the site footer. These will be displayed at the bottom of most pages, including those that do not require login. You can use a label of "trans::<key>" to use system-defined translations. For example: Using "trans::common.privacy_policy" will provide the translated text "Privacy Policy" and "trans::common.terms_of_service" will provide the translated text "Terms of Service".',
'app_footer_links_label' => 'Link Label',
'app_footer_links_url' => 'Link URL',
'app_footer_links_add' => 'Add Footer Link',
'app_footer_links' => 'Sidfotslänkar',
'app_footer_links_desc' => 'Lägg till länkar som visas i sidfoten. Dessa kommer att visas längst ner på de flesta sidor, inklusive de som inte kräver inloggning. Du kan använda en etikett av "trans::<key>" för att använda systemdefinierade översättningar. Exempelvis översätts "trans::common.privacy_policy" till "Integritetspolicy" och "trans::common.terms_of_service" till "Användarvillkor".',
'app_footer_links_label' => 'Länketikett',
'app_footer_links_url' => 'Länk URL',
'app_footer_links_add' => 'Lägg till sidfotslänk',
'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.',
@ -180,10 +180,10 @@ return [
'users_delete_named' => 'Ta bort användaren :userName',
'users_delete_warning' => 'Detta kommer att ta bort användaren \':userName\' från systemet helt och hållet.',
'users_delete_confirm' => 'Är du säker på att du vill ta bort användaren?',
'users_migrate_ownership' => 'Migrate Ownership',
'users_migrate_ownership_desc' => 'Select a user here if you want another user to become the owner of all items currently owned by this user.',
'users_none_selected' => 'No user selected',
'users_delete_success' => 'User successfully removed',
'users_migrate_ownership' => 'Överför ägarskap',
'users_migrate_ownership_desc' => 'Välj en användare här om du vill att en annan användare ska bli ägare till alla objekt som för närvarande ägs av denna användare.',
'users_none_selected' => 'Ingen användare vald',
'users_delete_success' => 'Användaren har tagits bort',
'users_edit' => 'Redigera användare',
'users_edit_profile' => 'Redigera profil',
'users_edit_success' => 'Användaren har uppdaterats',
@ -232,7 +232,7 @@ return [
'ar' => 'العربية',
'bg' => 'Bǎlgarski',
'bs' => 'Bosanski',
'ca' => 'Català',
'ca' => 'Katalanska',
'cs' => 'Česky',
'da' => 'Danska',
'de' => 'Deutsch (Sie)',
@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -44,8 +44,8 @@ return [
'bookshelf_delete_notification' => 'Kitaplık Başarıyla Silindi',
// Favourites
'favourite_add_notification' => '":name" has been added to your favourites',
'favourite_remove_notification' => '":name" has been removed from your favourites',
'favourite_add_notification' => '":name" favorilerinize eklendi',
'favourite_remove_notification' => '":name" favorilerinizden çıkarıldı',
// Other
'commented_on' => 'yorum yaptı',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'İbranice',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => 'עברית',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -241,6 +241,7 @@ return [
'es_AR' => 'Español Argentina',
'fr' => 'Français',
'he' => '希伯來語',
'hr' => 'Hrvatski',
'hu' => 'Magyar',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',

View File

@ -19,8 +19,8 @@
</a>
@endif
@include('partials.view-toggle', ['view' => $view, 'type' => 'books'])
@include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
@include('partials.dark-mode-toggle', ['classes' => 'text-muted icon-list-item text-primary'])
@include('components.expand-toggle', ['classes' => 'text-primary', 'target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
@include('partials.dark-mode-toggle', ['classes' => 'icon-list-item text-primary'])
</div>
</div>
@stop

View File

@ -18,8 +18,8 @@
<div class="actions mb-xl">
<h5>{{ trans('common.actions') }}</h5>
<div class="icon-list text-primary">
@include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
@include('partials.dark-mode-toggle', ['classes' => 'text-muted icon-list-item text-primary'])
@include('components.expand-toggle', ['classes' => 'text-primary', 'target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
@include('partials.dark-mode-toggle', ['classes' => 'icon-list-item text-primary'])
</div>
</div>
@stop

View File

@ -19,8 +19,8 @@
</a>
@endif
@include('partials.view-toggle', ['view' => $view, 'type' => 'shelves'])
@include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
@include('partials.dark-mode-toggle', ['classes' => 'text-muted icon-list-item text-primary'])
@include('components.expand-toggle', ['classes' => 'text-primary', 'target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
@include('partials.dark-mode-toggle', ['classes' => 'icon-list-item text-primary'])
</div>
</div>
@stop

View File

@ -6,16 +6,14 @@
@endif
@if(count($favourites) > 0)
<div id="top-favourites" class="card mb-xl">
<h3 class="card-title">
<div id="top-favourites" class="mb-xl">
<h5>
<a href="{{ url('/favourites') }}" class="no-color">{{ trans('entities.my_most_viewed_favourites') }}</a>
</h3>
<div class="px-m">
@include('partials.entity-list', [
</h5>
@include('partials.entity-list', [
'entities' => $favourites,
'style' => 'compact',
])
</div>
])
</div>
@endif

View File

@ -6,7 +6,7 @@
<div class="grid half">
<div>
<div class="icon-list inline block">
@include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
@include('components.expand-toggle', ['classes' => 'text-muted text-primary', 'target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
</div>
</div>
<div class="text-m-right">

View File

@ -6,7 +6,7 @@ $key - Unique key for checking existing stored state.
<button type="button" expand-toggle="{{ $target }}"
expand-toggle-update-endpoint="{{ url('/settings/users/'. user()->id .'/update-expansion-preference/' . $key) }}"
expand-toggle-is-open="{{ $isOpen ? 'yes' : 'no' }}"
class="text-muted icon-list-item text-primary">
class="icon-list-item {{ $classes ?? '' }}">
<span>@icon('expand-text')</span>
<span>{{ trans('common.toggle_details') }}</span>
</button>

View File

@ -25,7 +25,7 @@
<table permissions-table class="table permissions-table toggle-switch-list" style="{{ !$model->restricted ? 'display: none' : '' }}">
<tr>
<th>{{ trans('common.role') }}</th>
<th @if($model->isA('page')) colspan="3" @else colspan="4" @endif>
<th colspan="{{ $model->isA('page') ? '3' : '4' }}">
{{ trans('common.actions') }}
<a href="#" permissions-table-toggle-all class="text-small ml-m text-primary">{{ trans('common.toggle_all') }}</a>
</th>

View File

@ -3,9 +3,13 @@
use BookStack\Entities\Tools\PageContent;
use BookStack\Entities\Models\Page;
use Tests\TestCase;
use Tests\Uploads\UsesImages;
class PageContentTest extends TestCase
{
use UsesImages;
protected $base64Jpeg = '/9j/2wBDAAMCAgICAgMCAgIDAwMDBAYEBAQEBAgGBgUGCQgKCgkICQkKDA8MCgsOCwkJDRENDg8QEBEQCgwSExIQEw8QEBD/yQALCAABAAEBAREA/8wABgAQEAX/2gAIAQEAAD8A0s8g/9k=';
public function test_page_includes()
{
@ -479,4 +483,64 @@ class PageContentTest extends TestCase
$pageView = $this->get($page->getUrl());
$pageView->assertElementExists('.page-content p > s');
}
public function test_base64_images_get_extracted_from_page_content()
{
$this->asEditor();
$page = Page::query()->first();
$this->put($page->getUrl(), [
'name' => $page->name, 'summary' => '',
'html' => '<p>test<img src="data:image/jpeg;base64,'.$this->base64Jpeg.'"/></p>',
]);
$page->refresh();
$this->assertStringMatchesFormat('%A<p%A>test<img src="http://localhost/uploads/images/gallery/%A.jpeg">%A</p>%A', $page->html);
$matches = [];
preg_match('/src="http:\/\/localhost(.*?)"/', $page->html, $matches);
$imagePath = $matches[1];
$imageFile = public_path($imagePath);
$this->assertEquals(base64_decode($this->base64Jpeg), file_get_contents($imageFile));
$this->deleteImage($imagePath);
}
public function test_base64_images_get_extracted_when_containing_whitespace()
{
$this->asEditor();
$page = Page::query()->first();
$base64PngWithWhitespace = "iVBORw0KGg\noAAAANSUhE\tUgAAAAEAAAA BCA YAAAAfFcSJAAA\n\t ACklEQVR4nGMAAQAABQAB";
$base64PngWithoutWhitespace = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4nGMAAQAABQAB';
$this->put($page->getUrl(), [
'name' => $page->name, 'summary' => '',
'html' => '<p>test<img src="data:image/png;base64,'.$base64PngWithWhitespace.'"/></p>',
]);
$page->refresh();
$this->assertStringMatchesFormat('%A<p%A>test<img src="http://localhost/uploads/images/gallery/%A.png">%A</p>%A', $page->html);
$matches = [];
preg_match('/src="http:\/\/localhost(.*?)"/', $page->html, $matches);
$imagePath = $matches[1];
$imageFile = public_path($imagePath);
$this->assertEquals(base64_decode($base64PngWithoutWhitespace), file_get_contents($imageFile));
$this->deleteImage($imagePath);
}
public function test_base64_images_blanked_if_not_supported_extension_for_extract()
{
$this->asEditor();
$page = Page::query()->first();
$this->put($page->getUrl(), [
'name' => $page->name, 'summary' => '',
'html' => '<p>test<img src="data:image/jiff;base64,'.$this->base64Jpeg.'"/></p>',
]);
$page->refresh();
$this->assertStringContainsString('<img src=""', $page->html);
}
}