diff --git a/lang/de/entities.php b/lang/de/entities.php index 2cfdd1490ed..94c327b7e06 100644 --- a/lang/de/entities.php +++ b/lang/de/entities.php @@ -65,7 +65,7 @@ 'import_errors_desc' => 'Die folgenden Fehler sind während des Importversuchs aufgetreten:', 'breadcrumb_siblings_for_page' => 'Navigate siblings for page', 'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter', - 'breadcrumb_siblings_for_book' => 'Navigate siblings for book', + 'breadcrumb_siblings_for_book' => 'Navigiere in Büchern', 'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf', // Permissions and restrictions diff --git a/lang/de_informal/entities.php b/lang/de_informal/entities.php index 346cd891ead..a3e6e5f369c 100644 --- a/lang/de_informal/entities.php +++ b/lang/de_informal/entities.php @@ -65,7 +65,7 @@ 'import_errors_desc' => 'Die folgenden Fehler sind während des Importversuchs aufgetreten:', 'breadcrumb_siblings_for_page' => 'Navigate siblings for page', 'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter', - 'breadcrumb_siblings_for_book' => 'Navigate siblings for book', + 'breadcrumb_siblings_for_book' => 'Navigiere in Büchern', 'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf', // Permissions and restrictions @@ -272,7 +272,7 @@ 'pages_md_insert_drawing' => 'Zeichnung einfügen', 'pages_md_show_preview' => 'Vorschau anzeigen', 'pages_md_sync_scroll' => 'Vorschau synchronisieren', - 'pages_md_plain_editor' => 'Plaintext editor', + 'pages_md_plain_editor' => 'Einfacher Editor', 'pages_drawing_unsaved' => 'Ungespeicherte Zeichnung gefunden', 'pages_drawing_unsaved_confirm' => 'Es wurden ungespeicherte Zeichnungsdaten von einem früheren, fehlgeschlagenen Versuch, die Zeichnung zu speichern, gefunden. Möchtest du diese ungespeicherte Zeichnung wiederherstellen und weiter bearbeiten?', 'pages_not_in_chapter' => 'Seite ist in keinem Kapitel', diff --git a/lang/es_AR/entities.php b/lang/es_AR/entities.php index 6c54a000413..1ae092de1ee 100644 --- a/lang/es_AR/entities.php +++ b/lang/es_AR/entities.php @@ -63,10 +63,10 @@ 'import_delete_desc' => 'Esto eliminará el archivo ZIP de importación subido y no se puede deshacer.', 'import_errors' => 'Errores de Importación', 'import_errors_desc' => 'Se produjeron los siguientes errores durante el intento de importación:', - 'breadcrumb_siblings_for_page' => 'Navigate siblings for page', - 'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter', - 'breadcrumb_siblings_for_book' => 'Navigate siblings for book', - 'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf', + 'breadcrumb_siblings_for_page' => 'Navegar por páginas del mismo nivel', + 'breadcrumb_siblings_for_chapter' => 'Navegar por capítulos del mismo nivel', + 'breadcrumb_siblings_for_book' => 'Navegar por libros del mismo nivel', + 'breadcrumb_siblings_for_bookshelf' => 'Navegar por estantes del mismo nivel', // Permissions and restrictions 'permissions' => 'Permisos', diff --git a/lang/fa/editor.php b/lang/fa/editor.php index a8b3d211a94..8a05571b845 100644 --- a/lang/fa/editor.php +++ b/lang/fa/editor.php @@ -42,13 +42,13 @@ 'callout_warning' => 'هشدار', 'callout_danger' => 'خطر', 'bold' => 'توپر', - 'italic' => 'حروف کج(ایتالیک)', + 'italic' => 'ایتالیک', 'underline' => 'زیرخط', 'strikethrough' => 'خط خورده', 'superscript' => 'بالانویسی', 'subscript' => 'پایین نویسی', 'text_color' => 'رنگ متن', - 'highlight_color' => 'Highlight color', + 'highlight_color' => 'رنگ هایلایت', 'custom_color' => 'رنگ دلخواه', 'remove_color' => 'حذف رنگ', 'background_color' => 'رنگ زمینه', diff --git a/lang/fa/entities.php b/lang/fa/entities.php index 34a12689afc..d7c0cc1c067 100644 --- a/lang/fa/entities.php +++ b/lang/fa/entities.php @@ -6,10 +6,10 @@ return [ // Shared - 'recently_created' => 'اخیرا ایجاد شده', - 'recently_created_pages' => 'صفحات اخیرا ایجاد شده', - 'recently_updated_pages' => 'صفحاتی که اخیرا روزآمد شدهاند', - 'recently_created_chapters' => 'فصل های اخیرا ایجاد شده', + 'recently_created' => 'تازه ایجاد شده', + 'recently_created_pages' => 'صفحههای تازه ایجاد شده', + 'recently_updated_pages' => 'صفحههای تازه بهروزرسانیشده', + 'recently_created_chapters' => 'فصلهای تازه ایجاد شده', 'recently_created_books' => 'کتاب های اخیرا ایجاد شده', 'recently_created_shelves' => 'قفسه کتاب های اخیرا ایجاد شده', 'recently_update' => 'اخیرا به روز شده', @@ -39,13 +39,13 @@ 'export_pdf' => 'فایل PDF', 'export_text' => 'پرونده متنی ساده', 'export_md' => 'راهنما مارکدون', - 'export_zip' => 'فایل فشردهی قابلحمل (ZIP)', + 'export_zip' => 'فایل فشردهی زیپ', 'default_template' => 'قالب پیشفرض صفحه', 'default_template_explain' => 'قالبی برای صفحه تعیین کنید که بهعنوان محتوای پیشفرض در تمام صفحاتی که در این مورد ایجاد میشوند، بهکار رود. توجه داشته باشید این قالب تنها در صورتی اعمال میشود که سازندهٔ صفحه به صفحهٔ قالب انتخابشده دسترسی نمایشی داشته باشد.', 'default_template_select' => 'انتخاب صفحهٔ قالب', 'import' => 'وارد کردن', 'import_validate' => 'اعتبارسنجی آیتمهای واردشده', - 'import_desc' => 'میتوانید کتابها، فصلها و صفحات را با استفاده از یک فایل فشرده (ZIP) که از همین سامانه یا نمونهای دیگر استخراج شده، وارد کنید. برای ادامه، یک فایل ZIP انتخاب نمایید. پس از بارگذاری و اعتبارسنجی فایل، در مرحله بعد میتوانید تنظیمات انتقال را انجام داده و انتقال را تأیید کنید.', + 'import_desc' => 'میتوانید کتابها، فصلها و صفحهها را با استفاده از یک فایل فشردهٔ ZIP وارد کنید که از همین سامانه یا نمونهای دیگر استخراج شده است. برای ادامه، فایل ZIP را انتخاب و بارگذاری کنید. پس از بارگذاری و اعتبارسنجی، در مرحلهٔ بعد میتوانید تنظیمات ورود را انجام داده و آن را تأیید کنید.', 'import_zip_select' => 'انتخاب فایل ZIP برای بارگذاری', 'import_zip_validation_errors' => 'هنگام اعتبارسنجی فایل ZIP ارائهشده، خطاهایی شناسایی شد:', 'import_pending' => 'ورودیهای در انتظار انتقال', @@ -54,25 +54,25 @@ 'import_continue_desc' => 'محتوای فایل ZIP بارگذاریشده را که قرار است وارد سامانه شود، مرور کنید. پس از اطمینان از صحت آن، انتقال را آغاز نمایید تا محتوا به این سامانه افزوده شود. توجه داشته باشید که پس از انتقال موفق، فایل ZIP بارگذاریشده بهصورت خودکار حذف خواهد شد.', 'import_details' => 'جزئیات انتقال ورودی', 'import_run' => 'شروع فرایند انتقال ورودی', - 'import_size' => 'حجم فایل ZIP واردشده: :size', - 'import_uploaded_at' => 'زمان بارگذاری: :relativeTime', - 'import_uploaded_by' => 'بارگذاری شده توسط:', + 'import_size' => 'حجم فایل ZIP واردشده:size', + 'import_uploaded_at' => 'زمان بارگذاری:relativeTime', + 'import_uploaded_by' => 'بارگذاری شده توسط', 'import_location' => 'مکان انتقال', 'import_location_desc' => 'برای محتوای واردشده، مقصدی انتخاب کنید. برای ایجاد محتوا در آن مقصد، داشتن مجوزهای لازم ضروری است.', 'import_delete_confirm' => 'مطمئن هستید که میخواهید آیتم واردشده را حدف کنید؟', 'import_delete_desc' => 'با انجام این کار، فایل ZIP واردشده حذف میشود و این عمل بازگشتناپذیر است.', 'import_errors' => 'خطای انتقال ورودی', 'import_errors_desc' => 'در جریان تلاش برای انتقال ورودی، خطاهای زیر رخ داد:', - 'breadcrumb_siblings_for_page' => 'Navigate siblings for page', - 'breadcrumb_siblings_for_chapter' => 'Navigate siblings for chapter', - 'breadcrumb_siblings_for_book' => 'Navigate siblings for book', - 'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf', + 'breadcrumb_siblings_for_page' => 'پیمایش صفحات همسطح', + 'breadcrumb_siblings_for_chapter' => 'پیمایش فصلهای همسطح', + 'breadcrumb_siblings_for_book' => 'پیمایش کتابهای همسطح', + 'breadcrumb_siblings_for_bookshelf' => 'پیمایش قفسههای همسطح', // Permissions and restrictions 'permissions' => 'مجوزها', 'permissions_desc' => 'مجوزها را در اینجا تنظیم کنید تا مجوزهای پیش فرض تنظیم شده برای نقش های کاربر را لغو کنید.', - 'permissions_book_cascade' => 'مجوزهای تنظیمشده روی کتابها بهطور خودکار به فصلها و صفحات داخل آن اختصاص داده میشوند، مگر اینکه مجوزهای اختصاصی برای آنها (فصلها و صفحات) تعریف شده باشد.', - 'permissions_chapter_cascade' => 'مجوزهای تنظیمشده روی فصلها بهطور خودکار به صفحات داخل آن اختصاص داده میشوند، مگر اینکه مجوزهای اختصاصی برای آنها (صفحات) تعریف شده باشد.', + 'permissions_book_cascade' => 'مجوزهای تنظیمشده روی کتابها بهطور خودکار به فصلها و صفحات داخل آن اختصاص داده میشوند، مگر اینکه مجوزهای اختصاصی برای آنها تعریف شده باشد.', + 'permissions_chapter_cascade' => 'مجوزهای تنظیمشده روی فصلها بهطور خودکار به صفحات داخل آن اختصاص داده میشوند، مگر اینکه مجوزهای اختصاصی برای آنها تعریف شده باشد.', 'permissions_save' => 'ذخيره مجوزها', 'permissions_owner' => 'مالک', 'permissions_role_everyone_else' => 'سایر کاربران', @@ -82,7 +82,7 @@ // Search 'search_results' => 'نتایج جستجو', - 'search_total_results_found' => 'نتیجه یافت شد :count | نتایج یافت شده :count', + 'search_total_results_found' => 'نتیجه یافت شد:count | نتایج یافت شده:count', 'search_clear' => 'پاک کردن جستجو', 'search_no_pages' => 'هیچ صفحه ای با این جستجو مطابقت ندارد', 'search_for_term' => 'جستجو برای :term', @@ -155,7 +155,7 @@ 'books_delete' => 'حذف کتاب', 'books_delete_named' => 'حذف کتاب:bookName', 'books_delete_explain' => 'با این کار کتابی با نام \':bookName\' حذف می شود. تمام صفحات و فصل ها حذف خواهند شد.', - 'books_delete_confirmation' => 'آیا مطمئن هستید که می خواهید این کتاب را حذف کنید؟', + 'books_delete_confirmation' => 'آیا مطمئن هستید که می خواهید این کتاب را حذف کنید?', 'books_edit' => 'ویرایش کتاب', 'books_edit_named' => 'ویرایش کتاب:bookName', 'books_form_book_name' => 'نام کتاب', @@ -169,14 +169,14 @@ 'books_permissions_active' => 'مجوزهای کتاب فعال است', 'books_search_this' => 'این کتاب را جستجو کنید', 'books_navigation' => 'ناوبری کتاب', - 'books_sort' => 'مرتب سازی مطالب کتاب', + 'books_sort' => 'مرتبسازی مطالب کتاب', 'books_sort_desc' => 'برای ساماندهی محتوای یک کتاب، میتوانید فصلها و صفحات آن را جابهجا کنید. همچنین میتوانید کتابهای دیگری بیفزایید تا جابهجایی فصلها و صفحات میان کتابها آسان شود. در صورت تمایل، میتوانید قاعدهای برای مرتبسازی خودکار تعیین کنید تا محتوای کتاب در صورت ایجاد تغییرات، به طور خودکار مرتب شود.', 'books_sort_auto_sort' => 'گزینه مرتبسازی خودکار', 'books_sort_auto_sort_active' => 'مرتبسازی خودکار با قاعده: :sortName فعال است', 'books_sort_named' => 'مرتبسازی کتاب:bookName', - 'books_sort_name' => 'مرتب سازی بر اساس نام', - 'books_sort_created' => 'مرتب سازی بر اساس تاریخ ایجاد', - 'books_sort_updated' => 'مرتب سازی بر اساس تاریخ به روز رسانی', + 'books_sort_name' => 'مرتبسازی بر اساس نام', + 'books_sort_created' => 'مرتبسازی بر اساس تاریخ ایجاد', + 'books_sort_updated' => 'مرتبسازی بر اساس تاریخ به روز رسانی', 'books_sort_chapters_first' => 'فصل اول', 'books_sort_chapters_last' => 'فصل آخر', 'books_sort_show_other' => 'نمایش کتابهای دیگر', @@ -234,9 +234,7 @@ 'pages_delete_draft' => 'حذف صفحه پیش نویس', 'pages_delete_success' => 'صفحه حذف شد', 'pages_delete_draft_success' => 'صفحه پیش نویس حذف شد', - 'pages_delete_warning_template' => 'این صفحه هماکنون بهعنوان قالب پیشفرض صفحه برای یک کتاب یا فصل در حال استفاده است. پس از حذف این صفحه، کتابها یا فصلهای مربوطه دیگر قالب پیشفرض صفحه نخواهند داشت. - -', + 'pages_delete_warning_template' => 'این صفحه هماکنون بهعنوان قالب پیشفرض صفحه برای یک کتاب یا فصل در حال استفاده است. پس از حذف این صفحه، کتابها یا فصلهای مربوط دیگر قالب پیشفرض صفحه نخواهند داشت.', 'pages_delete_confirm' => 'آیا مطمئن هستید که می خواهید این صفحه را حذف کنید؟', 'pages_delete_draft_confirm' => 'آیا مطمئن هستید که می خواهید این صفحه پیش نویس را حذف کنید؟', 'pages_editing_named' => 'ویرایش صفحه :pageName', @@ -245,7 +243,7 @@ 'pages_edit_draft' => 'ویرایش پیش نویس صفحه', 'pages_editing_draft' => 'در حال ویرایش پیش نویس', 'pages_editing_page' => 'در حال ویرایش صفحه', - 'pages_edit_draft_save_at' => 'پیش نویس ذخیره شده در', + 'pages_edit_draft_save_at' => 'پیش نویس ذخیره شده در ', 'pages_edit_delete_draft' => 'حذف پیش نویس', 'pages_edit_delete_draft_confirm' => 'آیا از حذف تغییرات صفحه پیشنویس اطمینان دارید؟ تمامی تغییراتتان، از آخرین ذخیرهسازی کامل، از بین خواهد رفت و ویرایشگر به آخرین وضعیت پیشنویس ذخیره شده بازگردانی خواهد شد.', 'pages_edit_discard_draft' => 'دور انداختن پیش نویس', @@ -253,8 +251,7 @@ 'pages_edit_switch_to_markdown_clean' => '(مطالب تمیز)', 'pages_edit_switch_to_markdown_stable' => '(محتوای پایدار)', 'pages_edit_switch_to_wysiwyg' => 'به ویرایشگر WYSIWYG بروید', - 'pages_edit_switch_to_new_wysiwyg' => 'تغییر به ویرایشگر جدید WYSIWYG -(ویرایشگر WYSIWYG: «آنچه میبینید همان است که بهدست میآورید»)', + 'pages_edit_switch_to_new_wysiwyg' => 'تغییر به ویرایشگر جدید WYSIWYG', 'pages_edit_switch_to_new_wysiwyg_desc' => '(در مرحله آزمایش بتا)', 'pages_edit_set_changelog' => 'تنظیم تغییرات', 'pages_edit_enter_changelog_desc' => 'توضیح مختصری از تغییراتی که ایجاد کرده اید وارد کنید', @@ -275,7 +272,7 @@ 'pages_md_insert_drawing' => 'درج طرح', 'pages_md_show_preview' => 'دیدن پیش نمایش', 'pages_md_sync_scroll' => 'هماهنگ سازی اسکرول پیش نمایش', - 'pages_md_plain_editor' => 'Plaintext editor', + 'pages_md_plain_editor' => 'ویرایشگر متن ساده', 'pages_drawing_unsaved' => 'نقاشی ذخیره نشده پیدا شد', 'pages_drawing_unsaved_confirm' => 'نسخهای ذخیرهنشده از طراحیهای قبلی پیدا شد. آیا میخواهید این طراحی ذخیرهنشده را بازیابی کنید و به ویرایش آن ادامه دهید؟', 'pages_not_in_chapter' => 'صفحه در یک فصل نیست', diff --git a/lang/fr/activities.php b/lang/fr/activities.php index b65134a2409..0e70917da55 100644 --- a/lang/fr/activities.php +++ b/lang/fr/activities.php @@ -59,7 +59,7 @@ 'favourite_remove_notification' => '":name" a été supprimé de vos favoris', // Watching - 'watch_update_level_notification' => 'Suivre les préférences mises à jour avec succès', + 'watch_update_level_notification' => 'Préférences de surveillance mises à jour avec succès', // Auth 'auth_login' => 'connecté', diff --git a/lang/fr/editor.php b/lang/fr/editor.php index 73bc6ad21db..4d4d8c0e87a 100644 --- a/lang/fr/editor.php +++ b/lang/fr/editor.php @@ -35,7 +35,7 @@ 'header_tiny' => 'En-tête minuscule', 'paragraph' => 'Paragraphe', 'blockquote' => 'Bloc de citation', - 'inline_code' => 'Ligne de Code', + 'inline_code' => 'Ligne de code', 'callouts' => 'Légendes', 'callout_information' => 'Information', 'callout_success' => 'Succès', @@ -47,7 +47,7 @@ 'strikethrough' => 'Barré', 'superscript' => 'Exposant', 'subscript' => 'Indice', - 'text_color' => 'Couleur Texte', + 'text_color' => 'Couleur de texte', 'highlight_color' => 'Couleur de surlignage', 'custom_color' => 'Couleur personnalisée', 'remove_color' => 'Supprimer la couleur', @@ -75,7 +75,7 @@ 'insert_media_title' => 'Insérer/Modifier un média', 'clear_formatting' => 'Effacer le formatage', 'source_code' => 'Code source', - 'source_code_title' => 'Code Source', + 'source_code_title' => 'Code source', 'fullscreen' => 'Plein écran', 'image_options' => 'Options d\'image', @@ -130,7 +130,7 @@ 'caption' => 'Légende', 'show_caption' => 'Afficher la légende', 'constrain' => 'Conserver les proportions', - 'cell_border_solid' => 'En continue', + 'cell_border_solid' => 'Continu', 'cell_border_dotted' => 'En pointillé', 'cell_border_dashed' => 'En tirets', 'cell_border_double' => 'En double trait', diff --git a/lang/zh_CN/entities.php b/lang/zh_CN/entities.php index 89c23c281c5..03f6393ca88 100644 --- a/lang/zh_CN/entities.php +++ b/lang/zh_CN/entities.php @@ -46,7 +46,7 @@ 'import' => '导入', 'import_validate' => '验证导入', 'import_desc' => '使用便携式 zip 导出从相同或不同的实例导入书籍、章节和页面。选择一个 ZIP 文件以继续。文件上传并验证后,您就可以在下一个视图中配置和确认导入。', - 'import_zip_select' => '选择要上床的 ZIP 文件', + 'import_zip_select' => '选择要上传的 ZIP 文件', 'import_zip_validation_errors' => '验证提供的 ZIP 文件时检测到错误:', 'import_pending' => '等待导入', 'import_pending_none' => '尚未开始导入。', diff --git a/resources/js/components/api-nav.ts b/resources/js/components/api-nav.ts new file mode 100644 index 00000000000..a84c1cb330b --- /dev/null +++ b/resources/js/components/api-nav.ts @@ -0,0 +1,32 @@ +import {Component} from "./component"; + +export class ApiNav extends Component { + private select!: HTMLSelectElement; + private sidebar!: HTMLElement; + private body!: HTMLElement; + + setup() { + this.select = this.$refs.select as HTMLSelectElement; + this.sidebar = this.$refs.sidebar; + this.body = this.$el.ownerDocument.documentElement; + this.select.addEventListener('change', () => { + const section = this.select.value; + const sidebarTarget = document.getElementById(`sidebar-header-${section}`); + const contentTarget = document.getElementById(`section-${section}`); + if (sidebarTarget && contentTarget) { + + const sidebarPos = sidebarTarget.getBoundingClientRect().top - this.sidebar.getBoundingClientRect().top + this.sidebar.scrollTop; + this.sidebar.scrollTo({ + top: sidebarPos - 120, + behavior: 'smooth', + }); + + const bodyPos = contentTarget.getBoundingClientRect().top + this.body.scrollTop; + this.body.scrollTo({ + top: bodyPos - 20, + behavior: 'smooth', + }); + } + }); + } +} \ No newline at end of file diff --git a/resources/js/components/index.ts b/resources/js/components/index.ts index 63e1ad0dbf7..736d93f0595 100644 --- a/resources/js/components/index.ts +++ b/resources/js/components/index.ts @@ -1,6 +1,7 @@ export {AddRemoveRows} from './add-remove-rows'; export {AjaxDeleteRow} from './ajax-delete-row'; export {AjaxForm} from './ajax-form'; +export {ApiNav} from './api-nav'; export {Attachments} from './attachments'; export {AttachmentsList} from './attachments-list'; export {AutoSuggest} from './auto-suggest'; diff --git a/resources/sass/_blocks.scss b/resources/sass/_blocks.scss index 8c248caee14..4857c2ceee5 100644 --- a/resources/sass/_blocks.scss +++ b/resources/sass/_blocks.scss @@ -274,7 +274,19 @@ .sticky-sidebar { position: sticky; - top: vars.$m; - max-height: calc(100vh - #{vars.$m}); + top: 0; + padding-left: 2px; + max-height: calc(100vh); overflow-y: auto; + .sticky-sidebar-header { + position: sticky; + top: 0; + background: #F2F2F2; + background: linear-gradient(180deg,rgba(242, 242, 242, 1) 66%, rgba(242, 242, 242, 0) 100%); + z-index: 4; + } +} +.dark-mode .sticky-sidebar-header { + background: #111; + background: linear-gradient(180deg,rgba(17, 17, 17, 1) 66%, rgba(17, 17, 17, 0) 100%); } diff --git a/resources/views/api-docs/index.blade.php b/resources/views/api-docs/index.blade.php index 84c6d21acfb..c331f070784 100644 --- a/resources/views/api-docs/index.blade.php +++ b/resources/views/api-docs/index.blade.php @@ -2,48 +2,65 @@ @section('body') -