]> BookStack Code Mirror - bookstack/commitdiff
Merge branch 'master' into release
authorDan Brown <redacted>
Fri, 4 Jun 2021 22:08:59 +0000 (23:08 +0100)
committerDan Brown <redacted>
Fri, 4 Jun 2021 22:08:59 +0000 (23:08 +0100)
89 files changed:
.github/translators.txt
app/Auth/Role.php
app/Config/app.php
app/Entities/Tools/PageContent.php
app/Http/Controllers/Api/PageApiController.php
app/Http/Middleware/Localization.php
app/Uploads/Image.php
app/Uploads/ImageRepo.php
resources/lang/ar/settings.php
resources/lang/bg/common.php
resources/lang/bg/components.php
resources/lang/bg/entities.php
resources/lang/bg/settings.php
resources/lang/bg/validation.php
resources/lang/bs/settings.php
resources/lang/ca/settings.php
resources/lang/cs/settings.php
resources/lang/da/settings.php
resources/lang/de/common.php
resources/lang/de/settings.php
resources/lang/de_informal/activities.php
resources/lang/de_informal/entities.php
resources/lang/de_informal/errors.php
resources/lang/de_informal/settings.php
resources/lang/en/settings.php
resources/lang/es/settings.php
resources/lang/es_AR/activities.php
resources/lang/es_AR/common.php
resources/lang/es_AR/entities.php
resources/lang/es_AR/settings.php
resources/lang/fa/settings.php
resources/lang/fr/common.php
resources/lang/fr/settings.php
resources/lang/he/settings.php
resources/lang/hr/activities.php [new file with mode: 0644]
resources/lang/hr/auth.php [new file with mode: 0644]
resources/lang/hr/common.php [new file with mode: 0644]
resources/lang/hr/components.php [new file with mode: 0644]
resources/lang/hr/entities.php [new file with mode: 0644]
resources/lang/hr/errors.php [new file with mode: 0644]
resources/lang/hr/pagination.php [new file with mode: 0644]
resources/lang/hr/passwords.php [new file with mode: 0644]
resources/lang/hr/settings.php [new file with mode: 0644]
resources/lang/hr/validation.php [new file with mode: 0644]
resources/lang/hu/settings.php
resources/lang/id/activities.php
resources/lang/id/settings.php
resources/lang/it/activities.php
resources/lang/it/common.php
resources/lang/it/entities.php
resources/lang/it/errors.php
resources/lang/it/settings.php
resources/lang/ja/settings.php
resources/lang/ko/settings.php
resources/lang/ko/validation.php
resources/lang/lv/common.php
resources/lang/lv/entities.php
resources/lang/lv/settings.php
resources/lang/nb/settings.php
resources/lang/nl/common.php
resources/lang/nl/settings.php
resources/lang/pl/settings.php
resources/lang/pt/settings.php
resources/lang/pt_BR/settings.php
resources/lang/ru/activities.php
resources/lang/ru/common.php
resources/lang/ru/entities.php
resources/lang/ru/settings.php
resources/lang/sk/settings.php
resources/lang/sl/settings.php
resources/lang/sv/activities.php
resources/lang/sv/common.php
resources/lang/sv/entities.php
resources/lang/sv/errors.php
resources/lang/sv/settings.php
resources/lang/tr/activities.php
resources/lang/tr/settings.php
resources/lang/uk/settings.php
resources/lang/vi/settings.php
resources/lang/zh_CN/settings.php
resources/lang/zh_TW/settings.php
resources/views/common/home-book.blade.php
resources/views/common/home-custom.blade.php
resources/views/common/home-shelves.blade.php
resources/views/common/home-sidebar.blade.php
resources/views/common/home.blade.php
resources/views/components/expand-toggle.blade.php
resources/views/form/entity-permissions.blade.php
tests/Entity/PageContentTest.php

index ca22f050212da89e187ff60fab87f65e4d93066f..baaea5d92261fc0035000e4a42fe715b76bc58bf 100644 (file)
@@ -165,3 +165,5 @@ Francesco Franchina (ffranchina) :: Italian
 Aimrane Kds (aimrane.kds) :: Arabic
 whenwesober :: Indonesian
 Rem (remkovdhoef) :: Dutch
+syn7ax69 :: Bulgarian; Turkish
+Blaade :: French
index 629cd6a955d8abf7961b67aa1c598d1d62d30658..59b1f547c13f527b7f9bd19d524525a9415e1972 100644 (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();
     }
 
     /**
index ea5252f4fc282a2b47fc1943bd6d55006b6796b7..550c98b0a6f00c98a87dd2f5deb5dba76733ddf0 100755 (executable)
@@ -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',
index ff502d1640c5de2252d4d0c1acbce43255c87133..5e3ef98d0fa7b336d2195cd3eaf3a4550516827b 100644 (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;
+    }
 }
index a6db0583380e610626cef1794e8e5d8a2e501ea1..fd4a16effeb56dce464f9ebeef2a427eb6ecce3e 100644 (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)
     {
index cd084746c5ca2b6ea432d5d2ab863e807bc94581..0b286a713f8398f45811b78e82c0fac990991185 100644 (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',
index ca1df3c6c5e209da107bfaaa9a0829e34cb8190c..3657aa9469d2bac249fe0b146608a4784ba96eef 100644 (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;
index e6f7668241dafa4dcfad7a0b852bfc6d214904c8..ef249c58b02b59710133d25e71d871b4ff255b9c 100644 (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
index 20789d842eacbe545e17572081a120542aa8127d..88f68a2f8568c0540a7881c3c70592c5b3772044 100755 (executable)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 600d8df3de5e1f0fd08cc1c32ce7cd0523aa2bc3..7c833bd0d21855605bd2da5fe44c013fbdd22986 100644 (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' => 'Общи условия',
 ];
index b15aa6f796fb6cad2390933917c6289329695700..4be89bfb5a9ed2e8543e6c764a33c92621080f0a 100644 (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' => 'Изображението е изтрито',
index f5ca1850cc1dc7a703d5385509793ffd6375de0e..accf2157a409f7ad1018cf9aae2b2381fbddc018 100644 (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' => 'Може да прикачите линк, ако не искате да качвате файл. Този линк може да бъде към друга страница или към файл в облакова пространство.',
index 5fb24056e05fd5011f09afe640a019df530cf019..c32d3a5dd9d05f9681f5771a1ac4717d0922f90a 100644 (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',
index 4031de2ae743b75bafd49195ff06b29a347cbf22..3f22751dd567a0cb1a35df2b20020e824fcbf426 100644 (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.',
index ab7f153224afd41bb90e9cd54a9472895727b619..8a7946b1281269a0f62d17d6dacea2afd466f56b 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 6ce3b19035a76e3c06cbb3bbd9e425e3f4e86064..165c014b4df250601d756255a89f5d931354999d 100755 (executable)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 1dc4000aae3e94f7402ee856db318543c932fa80..86b94956f2290d95c4cb2879650eb3a60fe83619 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index e0640888b00b78dfa4a5169886e75fe8770a47de..7bbc31edbc209d2712b9aa906536425a79254d25 100644 (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',
index 44a10ebc2c2b106f66f91107dd4379746231e564..f46537ced82d1f0a850c3f3a30fe65a2b548b86c 100644 (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',
index 71276c034dfbbd833db16d63593f2ebac113450a..a853a0b62ee1efc0ba768eb9474782fc9727616e 100644 (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',
index abc1971f0e61ba8cf311ed88289c76eac82ef306..fbaa9a211c0f8d38615f1d8f3de6cd8e57868424 100644 (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',
index f0ab52f20788c744b183266f932907a7de821816..5377b1017ebbcc7db1fcf41f6d74e064b56cfdfe 100644 (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.',
index 15e4ba51d4b81ef5335be0fe5c73294bd7873c6f..181051459f5fd62f6d22f3f6c2190de93016a590 100644 (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.',
index 440f54d965eebb462ea94ca66380c70f38caaad6..5c915c537db69f069acb447d6b8e5a6177a3de5c 100644 (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',
index ab7f153224afd41bb90e9cd54a9472895727b619..8a7946b1281269a0f62d17d6dacea2afd466f56b 100755 (executable)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index d6a208b8c1da2aa261816ee2f29776b5466955a6..0010e7cae457d19328900d346bb9524b6649b35c 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 0d0cbf7ed75c4d005a4581481c83ef22a1cd890e..2ee087b71fd7241f10667b3e98d1cbcb41dfbffa 100644 (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',
index dd4c0be4c61fcc6128f4a5ee4de2e37906618127..190d99c1ca7a5db4dd20555c4c991718d52568a3 100644 (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',
index e1252b0e2b7c4382a7ead8d67e4e087f65619d43..02c2dcbb91907dacba82138c167ef618b692a623 100644 (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',
index cf250d79e670373fc39a0875f6ae38199a4dae7a..93d64ab3b0eeb248e8b147d134caa2237be4b42e 100644 (file)
@@ -242,6 +242,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index ab7f153224afd41bb90e9cd54a9472895727b619..8a7946b1281269a0f62d17d6dacea2afd466f56b 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 7d3ea6da0e1075e95685759fe5c92ed5a7a68c7d..6203c7326cafeb75deadd684cd5078d079820c2d 100644 (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',
index fb525cec28553bfa04cc836e48971739669b3dc0..ab1febc65d92534e46716bfbab10633b3546cb5f 100644 (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',
index b7ce527693a0cbc986ce3a36d01b59c9b3f888c0..a648e2e0203b8016fb9a7920c048066ed9a23573 100755 (executable)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
diff --git a/resources/lang/hr/activities.php b/resources/lang/hr/activities.php
new file mode 100644 (file)
index 0000000..a3340b4
--- /dev/null
@@ -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',
+];
diff --git a/resources/lang/hr/auth.php b/resources/lang/hr/auth.php
new file mode 100644 (file)
index 0000000..9680cc7
--- /dev/null
@@ -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!'
+];
\ No newline at end of file
diff --git a/resources/lang/hr/common.php b/resources/lang/hr/common.php
new file mode 100644 (file)
index 0000000..1df3c22
--- /dev/null
@@ -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',
+];
diff --git a/resources/lang/hr/components.php b/resources/lang/hr/components.php
new file mode 100644 (file)
index 0000000..5caffd5
--- /dev/null
@@ -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',
+];
diff --git a/resources/lang/hr/entities.php b/resources/lang/hr/entities.php
new file mode 100644 (file)
index 0000000..e8a8004
--- /dev/null
@@ -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.'
+];
diff --git a/resources/lang/hr/errors.php b/resources/lang/hr/errors.php
new file mode 100644 (file)
index 0000000..4562108
--- /dev/null
@@ -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:',
+
+];
diff --git a/resources/lang/hr/pagination.php b/resources/lang/hr/pagination.php
new file mode 100644 (file)
index 0000000..1165a10
--- /dev/null
@@ -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;',
+
+];
diff --git a/resources/lang/hr/passwords.php b/resources/lang/hr/passwords.php
new file mode 100644 (file)
index 0000000..51104ab
--- /dev/null
@@ -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!',
+
+];
diff --git a/resources/lang/hr/settings.php b/resources/lang/hr/settings.php
new file mode 100644 (file)
index 0000000..9c4d6eb
--- /dev/null
@@ -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' => '繁體中文',
+    ]
+    //!////////////////////////////////
+];
diff --git a/resources/lang/hr/validation.php b/resources/lang/hr/validation.php
new file mode 100644 (file)
index 0000000..5b1849c
--- /dev/null
@@ -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' => [],
+];
index ba748aafedd5a51da97fcb60cf6d070333e3f430..d8f05200852f285585ac4a8ebabbc4490117b069 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index ac3293c1b75e28797f3f40458fc302d04d709218..1255e32dcf9c336687d24c8e0dca1a1c2a369ab4 100644 (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',
 ];
index 7f83fbad885155c1c278dc66496f348ae7586a7e..7c45a700487618764fbd15fb3f6c24d61edc72ec 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 7b956156144b1b8e8838ef649557db5eb1ad6539..11c52b696f403c27d8fbbbf63234be75705f49aa 100755 (executable)
@@ -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',
index 635bf7de54e5544b6ee9a9ac0d66d4beab16dcb1..f33aa4cd3b16a614b0346999e124c61603a5d1a4 100755 (executable)
@@ -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',
index 30bc5768d74b2ae8c9a78c910f92f8368164acfd..9d5e8c2ab20741363d3420ec6a2b54ff43031414 100755 (executable)
@@ -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',
index 67497f67557eddab2d0cd2e89c3e9d357f73661c..9a20c744b7501c358c681e67fbca0ae3976b0455 100755 (executable)
@@ -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',
index 64118a0327ba40a8a8cfce8dbb678c4f35fae2c3..6aaca5a23206883039dc874bc1176ad503ac02e1 100755 (executable)
@@ -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',
index 91d19a8eb070bd05ec883e707deecb0473e0971b..b972c9b61a4151178962c9b8e0791d08534acfed 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 923d9e12646d3f601e193f6bb0798e5a5bce34ac..95a681eca16ed58fabee580e68e42c3b9ca6d997 100755 (executable)
@@ -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',
index 78b17a1d23adc97d9e54f432c7edc3d4238510ea..6754d962069082ea2884d8875a5a8980f143ae15 100644 (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킬로바이트로 구성하세요.',
index 2c94f8c4143bded1e61f6c41267319fdc744231a..f99419c93e96767babbebcf442858fb4c0dcd15e 100644 (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',
index 74643da0e22950584ad47617f706af3b7970d689..0a01b9bf32522e2443b780cc450aca09f63ac615 100644 (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',
index decc25c865cc4918838c387890424bcca592e2fc..dc00a23b31b72c670dea0e20c00f678d51ea5010 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 4bd35776d59e3b130abab83cfc802ca90dc60e70..1451cff7098f1890b762aabfc8d861b148c86e27 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 7b0d4de3c96acd2057cb5dc3a494ea4bf33348e2..67d0876c7fe7ce023c441ce7444319fc5ad1eb86 100644 (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',
index 3efc20f84d22e6895a012246a8fc0ccddacd849d..54cee27b13706b142a2208a512cb32ba61c4f4b1 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 8e8a039482cd6064a1e3dbb80298f6fe6ad2b910..98130dafa564ea60c70368392d7298210248d564 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 3222d218dbd9b0e6754db139659c218547974843..c60b4dd1ba55cbc5d17411bcbb1892eb52e78ac9 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 6e801e27d4d1e86bc6525ae2398bc4750b8141c3..f06ffa835957ba6940bdfb9ac130b62b9ba55530 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 94dbd0b072d389364791f15b87344bcd13b1abf6..4f9fb07e9777317c0d8978cd605b04a2d1970625 100644 (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'                => 'прокомментировал',
index f4035c0f33d5043c4b6f8a80f94bb04c629fcd7e..fce83880edb5185c10441ff879533d81be8f4be8 100644 (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' => 'Параметры сортировки',
index bd3702d4bc4ff2e934391d6a38fa2b9bc55fef86..6d666b504088ae6143c424f454d70d434b72f05e 100644 (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' => 'Нет недавно обновленных страниц',
index 57e23b3c93a78a0e199c7adef4d2ef104bed5d26..676fc54b2e91323c72dd6d8bbc7a0ab24a005a71 100755 (executable)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 60a1a5add6c06164ed83c89f1c900ffbbc33e7d1..eeb237981157bff33915a11940ecc935598ddd20 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 8373c8cebef6fce4d0f480c93a92e6dfbb7530e9..dc03828681fd7ee63cc6d0eb662ac0f835208e72 100644 (file)
@@ -242,6 +242,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index dbbdb3e7c58945a92728678b0d09e8eeb4dd4686..30c157a66d1dd53d244ca1f6d435f06ab3972cfe 100644 (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',
index dab22f0c5e13561ca9aee4b5c7b63966503ed539..1482eeaab4a1a2d554d89d76b6bb8a319ed145b5 100644 (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',
 ];
index f635943ae59fdfb70f6fba6c4181f4a2fa8bb81d..ce0dfddf2dc8150656f35b294d42326303c6d0f4 100644 (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' => '#',
index 125fcbfd0e3039a338e7e6a44b719e277d0b12a4..b8216a42fa5d71c4de13befff703dff85ec15926 100644 (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',
index 07b1b5d4a19f02b4321631aa240258e4201c9986..d5044efbd36b350b0f0d81c0d3057f136930c151 100644 (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',
index 0c5e11d7ccf304b9d0e2078a3aa47fa542cd2591..9bcd1891f14a925a4dd8726cfd230968dbbedf22 100644 (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ı',
index 8ba1192c75094dc0deda77923ee19b8d2a687d8b..4b015c04244331866b7e1f0370feea0e1649e51d 100755 (executable)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'İbranice',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 12c2561325e5aa1af7016c88916d6f2328b0b0c8..fdcd67034f4f9a69316a678cfb7c34470697f443 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 6f282a568c4b28ffbb865b3862ab99b3c17af9dd..a105e82c7eac111e106f3322f1842f0d7a080fc7 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index ed222d7f492a9ac2d7ca82573f34f39a1484f3c8..b6152425f7569e7900d3815086a9bc7ee87b7e78 100755 (executable)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => 'עברית',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 278049052290778ffdd3fe90126d6d4592e173a2..77c1d8b83688c15a5f67ce1871a3288310e1a627 100644 (file)
@@ -241,6 +241,7 @@ return [
         'es_AR' => 'Español Argentina',
         'fr' => 'Français',
         'he' => '希伯來語',
+        'hr' => 'Hrvatski',
         'hu' => 'Magyar',
         'id' => 'Bahasa Indonesia',
         'it' => 'Italian',
index 1c18edb246bc1ce93040c7af6325d2a0250647c1..9f62d21e7b1c4e1f708e5fc7230f00faf765c8e3 100644 (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
index e0820305746c799d5d2deb890849397b98f1f70d..a22e2600228ceac320eb57b78fb965d52a159d4a 100644 (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
\ No newline at end of file
index 957fa6578fffd35e349c550fdf521a237fd09440..3c32fed740f7c70cb75f0da56b1eb8842eea6cff 100644 (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
index 5db89e8709147b66f745e9cf4f59042816b933c3..7fe0659f0bdb5e42d824e6a981cb0f9d033f21bc 100644 (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
 
index 3a360b19cc16ac7f12d1a7f1564ff4ccd1e67ae5..187f222b50f1b7b524f9b899d90dd7fb74fade0a 100644 (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">
index 0c14490386b0cfb968c00f7d06a535ab2570a6ea..8ed7ff6e036167cb97a7428a57bb906d2f2e7f1e 100644 (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>
index 6cf5ab8bdcac9db8b02f3debb384005ddaa27c80..d3e89cc447fa07953ac30599e27d9b625ec70c27 100644 (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>
index 6d5200794bc79354bd8243d80711867323f9f0c6..1b3af97c7c836de91dec418c5e78de57ecbd6233 100644 (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="https:\/\/p.rizon.top:443\/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="https:\/\/p.rizon.top:443\/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);
+    }
 }